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

徐州智能建站怎么做自己动手建立个人网站

徐州智能建站怎么做,自己动手建立个人网站,b2b网站建设需要多少费用,小企业网站制作为什么写这篇文章 项目里面使用到了七牛云,原来是基于七牛云的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://www.cadmedia.cn/news/4345.html

相关文章:

  • 深圳做网站哪家公司最好手机网站seo免费软件
  • 域名备案的价格系统优化大师官方下载
  • 做网站的不足 心得网站关键词排名分析
  • 浏览器无法打开住房和建设网站搜索引擎优化的完整过程
  • 上城区商城网站建设推广普通话的重要意义
  • 设计学类seo的作用主要有
  • 宁波企业网站设计南宁seo外包平台
  • 网站建设规划书ppt百度如何优化排名靠前
  • 百事通做网站我要登录百度
  • 广州网站开发平台友情链接检测方法
  • 广东建泰建设有限公司网站软文平台有哪些
  • 河北seo推广方法seo推广优化公司哪家好
  • 浙江网站建设推广seo排名优化排行
  • 专业论坛网站有哪些关键字搜索
  • 影视公司网站设计seo外链工具有用吗
  • 宜春做网站公司怎么样seo站内优化
  • b站推广入口2024mmm潍坊seo培训
  • web旅游网页设计微信seo
  • 网站平台建设的当前问题百度seo和sem的区别
  • 怎么建设大型商务网站免费源码资源源码站
  • 网站建设方案模板百度总部公司地址在哪里
  • 福建省网站备案咨询网络服务商
  • 沧州网站优化公司网络营销推广工具有哪些
  • 重庆网站设计公司排名网络营销有哪些特点
  • 建设智能网站网络公关公司联系方式
  • 手机网站导航栏特效搜狗网站
  • 西安搬家公司收费seo快速培训
  • 做网站怎么赚钱滑县电个人网络销售平台
  • 为外国企业做中文网站建设网络营销工具
  • 网站标题算关键词优化吗安康地seo