当前位置: 首页 > wzjs >正文

重庆网站平台如何推广.net网站开发免费教程

重庆网站平台如何推广,.net网站开发免费教程,企业邮箱哪里买,免费企业网站程序上传为什么写这篇文章 项目里面使用到了七牛云,原来是基于七牛云的SDK来实现,后面由于内网部署的问题,考虑换成Minio,此时面临一个问题,需要修改代码。如果后期要换成阿里的SSO呢?或者换成腾讯云呢&#xff1f…

为什么写这篇文章

项目里面使用到了七牛云,原来是基于七牛云的SDK来实现,后面由于内网部署的问题,考虑换成Minio,此时面临一个问题,需要修改代码。如果后期要换成阿里的SSO呢?或者换成腾讯云呢?那每次都要修改代码太麻烦,而且最主要的是我的需求可能是在内网环境我使用Minio,而在外网环境我又要使用七牛云。有没有一种办法是不需要修改代码只修改一些配置文件就能切换多个云平台呢?找了一下,AWS的S3应该是满足的。

我理解的AWS S3

S3是亚马逊平台的文件管理协议,猜测是因为用的人多且推出较早,后期推出的很多云存储都对S3协议有支持,比如七牛云的支持连接:https://developer.qiniu.com/kodo/4086/aws-s3-compatible
在这里插入图片描述
其他的阿里云,腾讯云,Minio据说也是支持的

如何使用(基于Springboot项目)

1、导入maven包

<dependency><groupId>com.amazonaws</groupId><artifactId>aws-java-sdk-s3</artifactId><version>1.12.540</version>
</dependency>

2、增加yml相关配置

s3:accessKey: xxxsecretKey: xxxbucketName: xxendpoint: https://s3.cn-south-1.qiniucs.comregion: cn-south-1

3、S3ClientConfig

package com.yrt.framework.config;import com.amazonaws.auth.AWSStaticCredentialsProvider;
import com.amazonaws.auth.BasicAWSCredentials;
import com.amazonaws.client.builder.AwsClientBuilder;
import com.amazonaws.services.s3.AmazonS3;
import com.amazonaws.services.s3.AmazonS3ClientBuilder;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;/*** @author :GuangXiZhong* @date :Created in 2025/6/10 15:21* @description:*/
@Configuration
public class S3ClientConfig {@Value("${s3.accessKey}")private String accessKey;@Value("${s3.secretKey}")private String secretKey;@Value("${s3.endpoint}")private String endpoint;@Value("${s3.region}")private String region;@Beanpublic AmazonS3 amazonS3Client() {// 初始化 S3 客户端AwsClientBuilder.EndpointConfiguration endpointConfiguration = new AwsClientBuilder.EndpointConfiguration(endpoint, region);BasicAWSCredentials awsCreds = new BasicAWSCredentials(accessKey, secretKey);return AmazonS3ClientBuilder.standard().withEndpointConfiguration(endpointConfiguration).withCredentials(new AWSStaticCredentialsProvider(awsCreds)).build();}
}

4、S3Service上传服务

package com.yrt.common.utils;import com.amazonaws.HttpMethod;
import com.amazonaws.services.s3.AmazonS3;
import com.amazonaws.services.s3.model.DeleteObjectRequest;
import com.amazonaws.services.s3.model.GeneratePresignedUrlRequest;
import com.amazonaws.services.s3.model.ObjectMetadata;
import com.amazonaws.services.s3.model.PutObjectRequest;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.net.URL;
import java.util.Date;@Service
public class S3Service {@Value("${s3.bucketName}")private String bucketName;@Autowiredprivate AmazonS3 s3Client;// 上传文件public String uploadFile(String key, File file) {s3Client.putObject(new PutObjectRequest(bucketName, key, file));return s3Client.getUrl(bucketName, key).toString();}// 上传文件并指定文件名public String uploadFileWithKey(String key, InputStream inputStream) throws IOException {ObjectMetadata metadata = new ObjectMetadata();metadata.setContentLength(inputStream.available());s3Client.putObject(new PutObjectRequest(bucketName, key, inputStream, metadata));return s3Client.getUrl(bucketName, key).toString();}// 删除文件public void deleteFile(String key) {s3Client.deleteObject(new DeleteObjectRequest(bucketName, key));}// 获取文件的公共访问链接public String getFilePublicUrl(String key) {return s3Client.getUrl(bucketName, key).toString();}// 获取文件的私有访问链接(带签名)public String getFileSignedUrl(String key, long expirationTime) {Date expirationDate = new Date(System.currentTimeMillis() + expirationTime);GeneratePresignedUrlRequest request = new GeneratePresignedUrlRequest(bucketName, key).withMethod(HttpMethod.GET).withExpiration(expirationDate);URL signedUrl = s3Client.generatePresignedUrl(request);return signedUrl.toString();}
}

5、测试

package com.yrt;import com.yrt.common.utils.S3Service;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.ActiveProfiles;
import org.springframework.test.context.junit4.SpringRunner;import java.io.File;/*** @author :GuangXiZhong* @date :Created in 2025/4/23 16:06* @description:*/
@RunWith(SpringRunner.class)
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
@ActiveProfiles("dev")
public class S3Test {@Autowiredprivate S3Service s3Service;/*** S3测试*/@org.junit.Testpublic void testS3() {File file = new File("/Users/zhongguangxi/Documents/测试图片.png");System.out.println(s3Service.uploadFile("test2561018", file));}
}

运行一下可以看到输出了URL,说明成功了,此时去七牛空间看一下也能看到确实上传上去了
在这里插入图片描述

在这里插入图片描述

题外话:关于如何设置SDK的代理

有时候系统需要在内网服务器部署,内网服务器本身不通外网,但可以通过前置机服务器访问外网,需要再前置机上放置一个nginx代理,然后把sdk的上传地址设置成前置机的地址,通过nginx代理出去外网,但是此时遇到了一个问题

SDK的连接地址是直接写死在源码里面的,怎么修改这个地址呢?

我咨询了七牛云的工程师,给到的回复是

Java SDK本身并不直接提供设置代理的功能,你可以通过配置底层的HTTP客户端来实现代理设置,在七牛的Java SDK中,通常使用的是OkHttp作为默认的HTTP客户端。要设置代理,你需要自定义OkHttpClient实例,并在其中配置代理参数。

为此我尝试了如下办法

System.setProperty("http.proxyHost", "前置机IP");
System.setProperty("http.proxyPort", "代理端口");System.setProperty("https.proxyHost", "前置机IP"); 
System.setProperty("https.proxyPort", "代理端口");

文章转载自:

http://YFwptp8L.wLgpz.cn
http://DR0DwdjF.wLgpz.cn
http://smOetkZ1.wLgpz.cn
http://YVQXZw3d.wLgpz.cn
http://vULExQwl.wLgpz.cn
http://MB6weCLI.wLgpz.cn
http://Pn58KRA3.wLgpz.cn
http://6mK9YrK5.wLgpz.cn
http://qrbKBSaR.wLgpz.cn
http://McGRSWNo.wLgpz.cn
http://JdVXKzBq.wLgpz.cn
http://lPiNXWMW.wLgpz.cn
http://SM6NvIri.wLgpz.cn
http://dLAEg60d.wLgpz.cn
http://IfxAsU5Z.wLgpz.cn
http://jAoWQnwC.wLgpz.cn
http://r6z6IJAq.wLgpz.cn
http://81dLVlTZ.wLgpz.cn
http://QLMqWoLv.wLgpz.cn
http://uXWHInBU.wLgpz.cn
http://kwfLn0Go.wLgpz.cn
http://puwvSH13.wLgpz.cn
http://eI9pStnU.wLgpz.cn
http://9aneAcz5.wLgpz.cn
http://KlbOdt16.wLgpz.cn
http://aNtnFk1C.wLgpz.cn
http://Y1NwsDtP.wLgpz.cn
http://54cFPuWX.wLgpz.cn
http://FcWCf5hA.wLgpz.cn
http://FmnFf3Hc.wLgpz.cn
http://www.dtcms.com/wzjs/750767.html

相关文章:

  • 云南省滇中引水工程建设管理局网站腾讯云网站建设教学视频
  • 经济研究院网站建设方案软件技术方案
  • 龙岗 网站建设专业网站设计工作室
  • 山东大学网站设计与建设网站开发到上线需要多久
  • 重庆放心seo整站优化微网站建设的三个步骤
  • 美食网站设计论文松江企业网站建设
  • 网站建设邀标书镇江网站设计多少钱
  • 做seo比较好的网站wordpress 两个主题
  • 福田网站建设开发团队建筑公司网站管理员
  • 外贸网站建设科技建设银行证券转银行网站
  • 深圳效果好的免费网站建设万网搜
  • 虚拟主机 部署网站吗梦幻西如何建立网站做代练
  • 网站网页压缩国外seo网站
  • 网站建设概算营销型企业网站有哪些类型
  • 百度 手机网站收录wordpress仪表盘关闭
  • 东阳网站建设网站设计流程的步骤包括
  • seo网站建设刘贺稳营销专家aseo包年推广
  • 网站关键字怎么优化遵义住房和城乡建设厅网站
  • 可以直接进入网站的正能量分销系统开发搭建
  • 全国交通建设网官方网站常见的网络营销方式有哪些
  • 广州短视频网站开发中国建设银行安徽分行网站
  • 免费做字体的网站好生物网站 template
  • 在哪个网站做视频赚钱的北京seo排名收费
  • 大网络公司做网站网站建设与网站设计哪个好学
  • 上传照片的网站赚钱哈尔滨关键词优化软件
  • 彩票网站建设网站排名如何上升
  • wordpress网站搭建教程视频建营销网站
  • 欧美网站设计特点网站招商页面怎么做
  • 信息手机网站模板下载软件商城网站建设教程
  • 网站标准字体样昆明专业网站建设模板