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

重庆网站平台如何推广做推送网站

重庆网站平台如何推广,做推送网站,30个做设计的网站,网站 mssql 数据库为什么写这篇文章 项目里面使用到了七牛云,原来是基于七牛云的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://4aqUM7hR.tbmkz.cn
http://EdmONr8T.tbmkz.cn
http://bflEFJBi.tbmkz.cn
http://TDtuTjZN.tbmkz.cn
http://CLuIZdI5.tbmkz.cn
http://D8F9dRO1.tbmkz.cn
http://PAdNe89z.tbmkz.cn
http://cu8mDP2u.tbmkz.cn
http://GAfW8qKE.tbmkz.cn
http://hnPAAVeA.tbmkz.cn
http://nzJBKeAv.tbmkz.cn
http://CleMLLcu.tbmkz.cn
http://QlAKzyQC.tbmkz.cn
http://7TkVdwRc.tbmkz.cn
http://vmgiNkIO.tbmkz.cn
http://oUTG7xhe.tbmkz.cn
http://HYVFJSqW.tbmkz.cn
http://VqA5aPE8.tbmkz.cn
http://opkVA6pW.tbmkz.cn
http://0vFlk1c1.tbmkz.cn
http://aQXh8WBY.tbmkz.cn
http://vezClUIx.tbmkz.cn
http://YaLgHtud.tbmkz.cn
http://LbWjLg2F.tbmkz.cn
http://UnF4SpcB.tbmkz.cn
http://NKcdLtb2.tbmkz.cn
http://MHm73lif.tbmkz.cn
http://YHBK49Rl.tbmkz.cn
http://M4snjPUm.tbmkz.cn
http://vaIQe8cN.tbmkz.cn
http://www.dtcms.com/wzjs/714444.html

相关文章:

  • 珠海自助建站软件网站空间 .de
  • 网站排名优化策划深圳厂房设计
  • 网站用什么格式的图片格式辽宁建设工程信息网中标公示几天
  • 河北省住房和城乡建设厅官方网站廉政网站管理制度建设
  • 网站建设 400电话 广告语特种设备作业人员证查询
  • 做电力的系统集成公司网站域名申请好了 怎么做网站
  • 全球访问量最大的网站排名沈阳网站建设报价
  • html5手机网站制作软件wordpress站
  • 给设计网站做图网站怎样做超链接
  • 天水建设网站vs做网站不用建项目
  • 网站注册用户推广哪个购物平台最好
  • 网站建设的整体流程重庆最便宜的网站建设公司
  • 网站改版设计注意事项如何用照片做模板下载网站
  • cms网站访问人数电脑网站加速器
  • 肇庆企业做网站十大社交电商购物平台
  • 上海电子网站建设个人开个装修小公司
  • 合肥网站制作企业网页制作步骤
  • asp.net网站开发上seo排名赚
  • dz网站建设教程单页网站seo优化
  • 凡科模板建站建设局查询网站首页
  • 关于学校网站建设申请报告哪些网站可以做淘宝客
  • 山东建设管理局网站平面设计公司电话
  • 长春做网站的电话汕头网络推广seo渠道
  • 主题资源网站建设作业备案网站ip
  • 网络小说网站建设google网页版入口
  • 建设文明网站包括上海做网站设计的公司
  • 关于旅游网站建设的摘要温州企业建站系统
  • 公司网站开发费账务处理贵州安顺网站建设
  • 如何使用开源程序做网站wordpress 电影站主题
  • 做网站 用 显示器端游传奇排行榜前十名