共计 2444 个字符,预计需要花费 7 分钟才能阅读完成。
背景
在互联网倒退的明天,近乎所有的云厂商都提供 对象存储服务。一种海量、平安、低成本、高牢靠的云存储服务,适宜寄存任意类型的文件。容量和解决能力弹性扩大,多种存储类型供选择,全面优化存储老本。
当咱们在应用对应云厂商产品的时候,只须要引入对应尝试提供的 SDK,依据其开发文档实现即可。然而当咱们接入的云厂商较多(或者可能保障接口程度迁徙时),咱们要依据指标厂商接口 破坏性批改。
如下提供了几家厂商接口 SDK 上传实例:
阿里云
// Endpoint 以杭州为例,其它 Region 请按理论状况填写。String endpoint = "http://oss-cn-hangzhou.aliyuncs.com";
String accessKeyId = "<yourAccessKeyId>";
String accessKeySecret = "<yourAccessKeySecret>";
// 创立 OSSClient 实例。OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);
// 创立 PutObjectRequest 对象。String content = "Hello OSS";
PutObjectRequest putObjectRequest = new PutObjectRequest("<yourBucketName>", "<yourObjectName>", new ByteArrayInputStream(content.getBytes()));
// 上传字符串。ossClient.putObject(putObjectRequest);
// 敞开 OSSClient。ossClient.shutdown();
华为云
String endPoint = "https://your-endpoint";
String ak = "*** Provide your Access Key ***";
String sk = "*** Provide your Secret Key ***";
// 创立 ObsClient 实例
ObsClient obsClient = new ObsClient(ak, sk, endPoint);
obsClient.putObject("bucketname", "objectname", new File("localfile")); // localfile 为待上传的本地文件门路,须要指定到具体的文件名
七牛云
Configuration cfg = new Configuration(Region.region0());
UploadManager uploadManager = new UploadManager(cfg);
String accessKey = "your access key";
String secretKey = "your secret key";
String localFilePath = "/home/qiniu/test.png";
String key = null;
Auth auth = Auth.create(accessKey, secretKey);
String upToken = auth.uploadToken(bucket);
Response response = uploadManager.put(localFilePath, key, upToken);
解决方案
Amazon S3 协定
Amazon 是最早提供对象存储服务 的厂商,制订文件存储相干的业内规范,这意味着只须要实现 S3 协定即可接入兼容此协定的文件存储厂商和中间件。当然 S3 协定不仅仅是技术实现要求规范,对于可用性等都有具体的要求。
兼容 S3 协定国内云厂商
名称 | 地址 |
---|---|
阿里云 | https://www.aliyun.com |
华为云 | https://www.huaweicloud.com |
腾讯云 | https://cloud.tencent.com |
七牛云 | https://www.qiniu.com |
金山云 | https://www.ksyun.com |
如何应用
- 引入依赖。引入此依赖,无需在引入云厂商 SDK
<dependency>
<groupId>com.pig4cloud.plugin</groupId>
<artifactId>oss-spring-boot-starter</artifactId>
<version>0.0.1</version>
</dependency>
- 配置文件存储
oss:
path-style-access: false #申请门路是否 XXX/{bucketName}
endpoint: s3-cn-east-1.qiniucs.com
access-key: xxx # 云厂商提供的 key
secret-key: xxx # 云厂商提供的密钥
bucketName: pig4cloud # 上文创立的桶名称
- 操作
@Autowire
private final OssTemplate ossTemplate;
ossTemplate.putObject(CommonConstants.BUCKET_NAME, fileName, file.getInputStream());
反对 MINIO 等自建文件存储
- 创立 minio
docker run -p 9000:9000 --name minio1 \
-e "MINIO_ACCESS_KEY=lengleng" \
-e "MINIO_SECRET_KEY=lengleng" \
minio/minio server /data
- 配置 minio 参数
# 文件系统
oss:
path-style-access: true
endpoint: http://IP:9000
access-key: lengleng
secret-key: lengleng
bucketName: lengleng
- 应用 OssTemplate 上传即可
源码地址:
https://github.com/pig-mesh/oss-spring-boot-starter 欢送 fork 扩大
正文完