update OSS模块 更新 阿里云 腾讯云 相关代码 重构部分代码结构
This commit is contained in:
parent
22fd00832d
commit
7114fc2720
|
@ -137,3 +137,42 @@ management:
|
||||||
endpoint:
|
endpoint:
|
||||||
logfile:
|
logfile:
|
||||||
external-file: ./logs/sys-console.log
|
external-file: ./logs/sys-console.log
|
||||||
|
|
||||||
|
--- # OSS 云存储(界面 <参数设置> 可切换)
|
||||||
|
cloud-storage:
|
||||||
|
# minio配置
|
||||||
|
minio:
|
||||||
|
endpoint: http://localhost:9000
|
||||||
|
accessKey: ruoyi
|
||||||
|
secretKey: ruoyi123
|
||||||
|
bucketName: ruoyi
|
||||||
|
# 七牛云配置
|
||||||
|
qiniu:
|
||||||
|
domain: http://XXX.XXXX.com
|
||||||
|
prefix:
|
||||||
|
accessKey: XXXXXXXXXXXXXXX
|
||||||
|
secretKey: XXXXXXXXXXXXXXX
|
||||||
|
bucketName: ruoyi
|
||||||
|
isHttps: false
|
||||||
|
# z0 华东 z1 华北 z2 华南 na0 北美 as0 东南亚
|
||||||
|
# 不填为自动获取(性能低 易出问题)
|
||||||
|
region: z0
|
||||||
|
# 阿里云配置
|
||||||
|
aliyun:
|
||||||
|
endpoint: http://oss-cn-beijing.aliyuncs.com
|
||||||
|
prefix:
|
||||||
|
accessKeyId: XXXXXXXXXXXXXXX
|
||||||
|
accessKeySecret: XXXXXXXXXXXXXXX
|
||||||
|
bucketName: ruoyi
|
||||||
|
# 腾讯云配置
|
||||||
|
qcloud:
|
||||||
|
endpoint: http://cos.ap-beijing.myqcloud.com
|
||||||
|
prefix:
|
||||||
|
secretId: XXXXXXXXXXXXXXX
|
||||||
|
secretKey: XXXXXXXXXXXXXXX
|
||||||
|
# 腾讯云bucket名规则 格式为 BucketName-APPID 此处填写的存储桶名称必须为此格式
|
||||||
|
bucketName: ruoyi-1250000000
|
||||||
|
isHttps: false
|
||||||
|
# 地域名参考官方文档
|
||||||
|
# https://cloud.tencent.com/document/product/436/6224
|
||||||
|
region: ap-beijing
|
||||||
|
|
|
@ -137,3 +137,42 @@ management:
|
||||||
endpoint:
|
endpoint:
|
||||||
logfile:
|
logfile:
|
||||||
external-file: ./logs/sys-console.log
|
external-file: ./logs/sys-console.log
|
||||||
|
|
||||||
|
--- # OSS 云存储(界面 <参数设置> 可切换)
|
||||||
|
cloud-storage:
|
||||||
|
# minio配置
|
||||||
|
minio:
|
||||||
|
endpoint: http://172.30.0.54:9000
|
||||||
|
accessKey: ruoyi
|
||||||
|
secretKey: ruoyi123
|
||||||
|
bucketName: ruoyi
|
||||||
|
# 七牛云配置
|
||||||
|
qiniu:
|
||||||
|
domain: http://XXX.XXXX.com
|
||||||
|
prefix:
|
||||||
|
accessKey: XXXXXXXXXXXXXXX
|
||||||
|
secretKey: XXXXXXXXXXXXXXX
|
||||||
|
bucketName: ruoyi
|
||||||
|
isHttps: false
|
||||||
|
# z0 华东 z1 华北 z2 华南 na0 北美 as0 东南亚
|
||||||
|
# 不填为自动获取(性能低 易出问题)
|
||||||
|
region: z0
|
||||||
|
# 阿里云配置
|
||||||
|
aliyun:
|
||||||
|
endpoint: http://oss-cn-beijing.aliyuncs.com
|
||||||
|
prefix:
|
||||||
|
accessKeyId: XXXXXXXXXXXXXXX
|
||||||
|
accessKeySecret: XXXXXXXXXXXXXXX
|
||||||
|
bucketName: ruoyi
|
||||||
|
# 腾讯云配置
|
||||||
|
qcloud:
|
||||||
|
endpoint: http://cos.ap-beijing.myqcloud.com
|
||||||
|
prefix:
|
||||||
|
secretId: XXXXXXXXXXXXXXX
|
||||||
|
secretKey: XXXXXXXXXXXXXXX
|
||||||
|
# 腾讯云bucket名规则 格式为 BucketName-APPID 此处填写的存储桶名称必须为此格式
|
||||||
|
bucketName: ruoyi-1250000000
|
||||||
|
isHttps: false
|
||||||
|
# 地域名参考官方文档
|
||||||
|
# https://cloud.tencent.com/document/product/436/6224
|
||||||
|
region: ap-beijing
|
||||||
|
|
|
@ -2,6 +2,7 @@ package com.ruoyi.oss.enumd;
|
||||||
|
|
||||||
import com.ruoyi.oss.service.impl.AliyunCloudStorageServiceImpl;
|
import com.ruoyi.oss.service.impl.AliyunCloudStorageServiceImpl;
|
||||||
import com.ruoyi.oss.service.impl.MinioCloudStorageServiceImpl;
|
import com.ruoyi.oss.service.impl.MinioCloudStorageServiceImpl;
|
||||||
|
import com.ruoyi.oss.service.impl.QcloudCloudStorageServiceImpl;
|
||||||
import com.ruoyi.oss.service.impl.QiniuCloudStorageServiceImpl;
|
import com.ruoyi.oss.service.impl.QiniuCloudStorageServiceImpl;
|
||||||
import lombok.AllArgsConstructor;
|
import lombok.AllArgsConstructor;
|
||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
|
@ -28,7 +29,7 @@ public enum CloudServiceEnumd {
|
||||||
/**
|
/**
|
||||||
* 腾讯云
|
* 腾讯云
|
||||||
*/
|
*/
|
||||||
QCLOUD("qcloud", QiniuCloudStorageServiceImpl.class),
|
QCLOUD("qcloud", QcloudCloudStorageServiceImpl.class),
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* minio
|
* minio
|
||||||
|
|
|
@ -102,18 +102,13 @@ public class CloudStorageProperties {
|
||||||
/**
|
/**
|
||||||
* 腾讯云绑定的域名
|
* 腾讯云绑定的域名
|
||||||
*/
|
*/
|
||||||
private String domain;
|
private String endpoint;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 腾讯云路径前缀
|
* 腾讯云路径前缀
|
||||||
*/
|
*/
|
||||||
private String prefix;
|
private String prefix;
|
||||||
|
|
||||||
/**
|
|
||||||
* 腾讯云appId
|
|
||||||
*/
|
|
||||||
private String appId;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 腾讯云SecretId
|
* 腾讯云SecretId
|
||||||
*/
|
*/
|
||||||
|
@ -129,6 +124,11 @@ public class CloudStorageProperties {
|
||||||
*/
|
*/
|
||||||
private String bucketName;
|
private String bucketName;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 七牛是否使用https
|
||||||
|
*/
|
||||||
|
private Boolean isHttps;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 腾讯云COS所属地区
|
* 腾讯云COS所属地区
|
||||||
*/
|
*/
|
||||||
|
@ -176,7 +176,7 @@ public class CloudStorageProperties {
|
||||||
private String region;
|
private String region;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 七牛存储区域
|
* 七牛是否使用https
|
||||||
*/
|
*/
|
||||||
private Boolean isHttps;
|
private Boolean isHttps;
|
||||||
|
|
||||||
|
|
|
@ -11,6 +11,8 @@ import java.io.InputStream;
|
||||||
*/
|
*/
|
||||||
public interface ICloudStorageService {
|
public interface ICloudStorageService {
|
||||||
|
|
||||||
|
void createBucket();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 获取服务商类型
|
* 获取服务商类型
|
||||||
*/
|
*/
|
||||||
|
@ -67,4 +69,6 @@ public interface ICloudStorageService {
|
||||||
* @return 返回http地址
|
* @return 返回http地址
|
||||||
*/
|
*/
|
||||||
UploadResult uploadSuffix(InputStream inputStream, String suffix, String contentType);
|
UploadResult uploadSuffix(InputStream inputStream, String suffix, String contentType);
|
||||||
|
|
||||||
|
String getEndpointLink();
|
||||||
}
|
}
|
||||||
|
|
|
@ -18,6 +18,9 @@ import java.util.Date;
|
||||||
*/
|
*/
|
||||||
public abstract class AbstractCloudStorageService implements ICloudStorageService, InitializingBean {
|
public abstract class AbstractCloudStorageService implements ICloudStorageService, InitializingBean {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public abstract void createBucket();
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public abstract String getServiceType();
|
public abstract String getServiceType();
|
||||||
|
|
||||||
|
@ -53,4 +56,7 @@ public abstract class AbstractCloudStorageService implements ICloudStorageServic
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public abstract void afterPropertiesSet() throws Exception;
|
public abstract void afterPropertiesSet() throws Exception;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public abstract String getEndpointLink();
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,8 +1,13 @@
|
||||||
package com.ruoyi.oss.service.impl;
|
package com.ruoyi.oss.service.impl;
|
||||||
|
|
||||||
|
import cn.hutool.core.util.StrUtil;
|
||||||
import com.aliyun.oss.ClientConfiguration;
|
import com.aliyun.oss.ClientConfiguration;
|
||||||
import com.aliyun.oss.OSSClient;
|
import com.aliyun.oss.OSSClient;
|
||||||
import com.aliyun.oss.common.auth.DefaultCredentialProvider;
|
import com.aliyun.oss.common.auth.DefaultCredentialProvider;
|
||||||
|
import com.aliyun.oss.model.CannedAccessControlList;
|
||||||
|
import com.aliyun.oss.model.CreateBucketRequest;
|
||||||
|
import com.aliyun.oss.model.ObjectMetadata;
|
||||||
|
import com.aliyun.oss.model.PutObjectRequest;
|
||||||
import com.ruoyi.oss.entity.UploadResult;
|
import com.ruoyi.oss.entity.UploadResult;
|
||||||
import com.ruoyi.oss.enumd.CloudServiceEnumd;
|
import com.ruoyi.oss.enumd.CloudServiceEnumd;
|
||||||
import com.ruoyi.oss.exception.OssException;
|
import com.ruoyi.oss.exception.OssException;
|
||||||
|
@ -39,11 +44,27 @@ public class AliyunCloudStorageServiceImpl extends AbstractCloudStorageService i
|
||||||
this.properties.getAccessKeyId(),
|
this.properties.getAccessKeyId(),
|
||||||
this.properties.getAccessKeySecret());
|
this.properties.getAccessKeySecret());
|
||||||
client = new OSSClient(this.properties.getEndpoint(), credentialProvider, configuration);
|
client = new OSSClient(this.properties.getEndpoint(), credentialProvider, configuration);
|
||||||
|
createBucket();
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
throw new IllegalArgumentException("阿里云存储配置错误! 请检查系统配置!");
|
throw new IllegalArgumentException("阿里云存储配置错误! 请检查系统配置!");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void createBucket() {
|
||||||
|
try {
|
||||||
|
String bucketName = properties.getBucketName();
|
||||||
|
if (client.doesBucketExist(bucketName)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
CreateBucketRequest createBucketRequest = new CreateBucketRequest(bucketName);
|
||||||
|
createBucketRequest.setCannedACL(CannedAccessControlList.PublicRead);
|
||||||
|
client.createBucket(createBucketRequest);
|
||||||
|
} catch (Exception e) {
|
||||||
|
throw new OssException("创建Bucket失败, 请核对阿里云配置信息");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String getServiceType() {
|
public String getServiceType() {
|
||||||
return CloudServiceEnumd.ALIYUN.getValue();
|
return CloudServiceEnumd.ALIYUN.getValue();
|
||||||
|
@ -57,35 +78,51 @@ public class AliyunCloudStorageServiceImpl extends AbstractCloudStorageService i
|
||||||
@Override
|
@Override
|
||||||
public UploadResult upload(InputStream inputStream, String path, String contentType) {
|
public UploadResult upload(InputStream inputStream, String path, String contentType) {
|
||||||
try {
|
try {
|
||||||
client.putObject(this.properties.getBucketName(), path, inputStream);
|
ObjectMetadata metadata = new ObjectMetadata();
|
||||||
|
metadata.setContentType(contentType);
|
||||||
|
client.putObject(new PutObjectRequest(properties.getBucketName(), path, inputStream, metadata));
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
throw new OssException("上传文件失败,请检查配置信息");
|
throw new OssException("上传文件失败,请检查阿里云配置信息");
|
||||||
}
|
}
|
||||||
return new UploadResult().setUrl(properties.getEndpoint() + "/" + path).setFilename(path);
|
return new UploadResult().setUrl(getEndpointLink() + "/" + path).setFilename(path);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void delete(String path) {
|
public void delete(String path) {
|
||||||
path = path.replace(this.properties.getEndpoint() + "/", "");
|
path = path.replace(getEndpointLink() + "/", "");
|
||||||
try {
|
try {
|
||||||
client.deleteObject(this.properties.getBucketName(), path);
|
client.deleteObject(properties.getBucketName(), path);
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
throw new OssException("上传文件失败,请检查配置信息");
|
throw new OssException("上传文件失败,请检查阿里云配置信息");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public UploadResult uploadSuffix(byte[] data, String suffix, String contentType) {
|
public UploadResult uploadSuffix(byte[] data, String suffix, String contentType) {
|
||||||
return upload(data, getPath(this.properties.getPrefix(), suffix), contentType);
|
return upload(data, getPath(properties.getPrefix(), suffix), contentType);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public UploadResult uploadSuffix(InputStream inputStream, String suffix, String contentType) {
|
public UploadResult uploadSuffix(InputStream inputStream, String suffix, String contentType) {
|
||||||
return upload(inputStream, getPath(this.properties.getPrefix(), suffix), contentType);
|
return upload(inputStream, getPath(properties.getPrefix(), suffix), contentType);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void afterPropertiesSet() throws Exception {
|
public void afterPropertiesSet() throws Exception {
|
||||||
OssFactory.register(getServiceType(),this);
|
OssFactory.register(getServiceType(), this);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getEndpointLink() {
|
||||||
|
String endpoint = properties.getEndpoint();
|
||||||
|
StringBuilder sb = new StringBuilder(endpoint);
|
||||||
|
if (StrUtil.containsAnyIgnoreCase(endpoint, "http://")) {
|
||||||
|
sb.insert(7, properties.getBucketName() + ".");
|
||||||
|
} else if (StrUtil.containsAnyIgnoreCase(endpoint, "https://")) {
|
||||||
|
sb.insert(8, properties.getBucketName() + ".");
|
||||||
|
} else {
|
||||||
|
throw new OssException("Endpoint配置错误");
|
||||||
|
}
|
||||||
|
return sb.toString();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -39,21 +39,31 @@ public class MinioCloudStorageServiceImpl extends AbstractCloudStorageService im
|
||||||
.endpoint(this.properties.getEndpoint())
|
.endpoint(this.properties.getEndpoint())
|
||||||
.credentials(this.properties.getAccessKey(), this.properties.getSecretKey())
|
.credentials(this.properties.getAccessKey(), this.properties.getSecretKey())
|
||||||
.build();
|
.build();
|
||||||
String bucketName = this.properties.getBucketName();
|
createBucket();
|
||||||
boolean exists = minioClient.bucketExists(BucketExistsArgs.builder().bucket(bucketName).build());
|
|
||||||
// 不存在就创建桶
|
|
||||||
if (!exists) {
|
|
||||||
minioClient.makeBucket(MakeBucketArgs.builder().bucket(bucketName).build());
|
|
||||||
minioClient.setBucketPolicy(SetBucketPolicyArgs.builder()
|
|
||||||
.bucket(bucketName)
|
|
||||||
.config(getPolicy(bucketName, PolicyType.READ))
|
|
||||||
.build());
|
|
||||||
}
|
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
throw new IllegalArgumentException("Minio存储配置错误! 请检查系统配置!");
|
throw new IllegalArgumentException("Minio存储配置错误! 请检查系统配置!");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void createBucket() {
|
||||||
|
try {
|
||||||
|
String bucketName = properties.getBucketName();
|
||||||
|
boolean exists = minioClient.bucketExists(BucketExistsArgs.builder().bucket(bucketName).build());
|
||||||
|
if (exists) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
// 不存在就创建桶
|
||||||
|
minioClient.makeBucket(MakeBucketArgs.builder().bucket(bucketName).build());
|
||||||
|
minioClient.setBucketPolicy(SetBucketPolicyArgs.builder()
|
||||||
|
.bucket(bucketName)
|
||||||
|
.config(getPolicy(bucketName, PolicyType.READ))
|
||||||
|
.build());
|
||||||
|
} catch (Exception e) {
|
||||||
|
throw new OssException("创建Bucket失败, 请核对Minio配置信息");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String getServiceType() {
|
public String getServiceType() {
|
||||||
return CloudServiceEnumd.MINIO.getValue();
|
return CloudServiceEnumd.MINIO.getValue();
|
||||||
|
@ -76,12 +86,12 @@ public class MinioCloudStorageServiceImpl extends AbstractCloudStorageService im
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
throw new OssException("上传文件失败,请核对Minio配置信息");
|
throw new OssException("上传文件失败,请核对Minio配置信息");
|
||||||
}
|
}
|
||||||
return new UploadResult().setUrl(getBaseUrl() + path).setFilename(path);
|
return new UploadResult().setUrl(getEndpointLink() + "/" + path).setFilename(path);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void delete(String path) {
|
public void delete(String path) {
|
||||||
path = path.replace(getBaseUrl(), "");
|
path = path.replace(getEndpointLink() + "/", "");
|
||||||
try {
|
try {
|
||||||
minioClient.removeObject(RemoveObjectArgs.builder()
|
minioClient.removeObject(RemoveObjectArgs.builder()
|
||||||
.bucket(properties.getBucketName())
|
.bucket(properties.getBucketName())
|
||||||
|
@ -107,8 +117,9 @@ public class MinioCloudStorageServiceImpl extends AbstractCloudStorageService im
|
||||||
OssFactory.register(getServiceType(), this);
|
OssFactory.register(getServiceType(), this);
|
||||||
}
|
}
|
||||||
|
|
||||||
private String getBaseUrl() {
|
@Override
|
||||||
return properties.getEndpoint() + "/" + properties.getBucketName() + "/";
|
public String getEndpointLink() {
|
||||||
|
return properties.getEndpoint() + "/" + properties.getBucketName();
|
||||||
}
|
}
|
||||||
|
|
||||||
private String getPolicy(String bucketName, PolicyType policyType) {
|
private String getPolicy(String bucketName, PolicyType policyType) {
|
||||||
|
|
|
@ -1,12 +1,16 @@
|
||||||
package com.ruoyi.oss.service.impl;
|
package com.ruoyi.oss.service.impl;
|
||||||
|
|
||||||
|
import cn.hutool.core.util.StrUtil;
|
||||||
import com.qcloud.cos.COSClient;
|
import com.qcloud.cos.COSClient;
|
||||||
import com.qcloud.cos.ClientConfig;
|
import com.qcloud.cos.ClientConfig;
|
||||||
import com.qcloud.cos.auth.BasicCOSCredentials;
|
import com.qcloud.cos.auth.BasicCOSCredentials;
|
||||||
import com.qcloud.cos.auth.COSCredentials;
|
import com.qcloud.cos.auth.COSCredentials;
|
||||||
|
import com.qcloud.cos.http.HttpProtocol;
|
||||||
|
import com.qcloud.cos.model.*;
|
||||||
import com.qcloud.cos.region.Region;
|
import com.qcloud.cos.region.Region;
|
||||||
import com.ruoyi.oss.entity.UploadResult;
|
import com.ruoyi.oss.entity.UploadResult;
|
||||||
import com.ruoyi.oss.enumd.CloudServiceEnumd;
|
import com.ruoyi.oss.enumd.CloudServiceEnumd;
|
||||||
|
import com.ruoyi.oss.exception.OssException;
|
||||||
import com.ruoyi.oss.factory.OssFactory;
|
import com.ruoyi.oss.factory.OssFactory;
|
||||||
import com.ruoyi.oss.properties.CloudStorageProperties;
|
import com.ruoyi.oss.properties.CloudStorageProperties;
|
||||||
import com.ruoyi.oss.properties.CloudStorageProperties.QcloudProperties;
|
import com.ruoyi.oss.properties.CloudStorageProperties.QcloudProperties;
|
||||||
|
@ -16,6 +20,7 @@ import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.context.annotation.Lazy;
|
import org.springframework.context.annotation.Lazy;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
|
import java.io.ByteArrayInputStream;
|
||||||
import java.io.InputStream;
|
import java.io.InputStream;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -41,12 +46,33 @@ public class QcloudCloudStorageServiceImpl extends AbstractCloudStorageService i
|
||||||
ClientConfig clientConfig = new ClientConfig();
|
ClientConfig clientConfig = new ClientConfig();
|
||||||
// 设置bucket所在的区域,华南:gz 华北:tj 华东:sh
|
// 设置bucket所在的区域,华南:gz 华北:tj 华东:sh
|
||||||
clientConfig.setRegion(new Region(this.properties.getRegion()));
|
clientConfig.setRegion(new Region(this.properties.getRegion()));
|
||||||
|
if (this.properties.getIsHttps()) {
|
||||||
|
clientConfig.setHttpProtocol(HttpProtocol.https);
|
||||||
|
} else {
|
||||||
|
clientConfig.setHttpProtocol(HttpProtocol.http);
|
||||||
|
}
|
||||||
client = new COSClient(credentials, clientConfig);
|
client = new COSClient(credentials, clientConfig);
|
||||||
|
createBucket();
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
throw new IllegalArgumentException("腾讯云存储配置错误! 请检查系统配置!");
|
throw new IllegalArgumentException("腾讯云存储配置错误! 请检查系统配置!");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void createBucket() {
|
||||||
|
try {
|
||||||
|
String bucketName = properties.getBucketName();
|
||||||
|
if (client.doesBucketExist(bucketName)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
CreateBucketRequest createBucketRequest = new CreateBucketRequest(bucketName);
|
||||||
|
createBucketRequest.setCannedAcl(CannedAccessControlList.PublicRead);
|
||||||
|
client.createBucket(createBucketRequest);
|
||||||
|
} catch (Exception e) {
|
||||||
|
throw new OssException("创建Bucket失败, 请核对腾讯云配置信息");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String getServiceType() {
|
public String getServiceType() {
|
||||||
return CloudServiceEnumd.QCLOUD.getValue();
|
return CloudServiceEnumd.QCLOUD.getValue();
|
||||||
|
@ -54,43 +80,57 @@ public class QcloudCloudStorageServiceImpl extends AbstractCloudStorageService i
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public UploadResult upload(byte[] data, String path, String contentType) {
|
public UploadResult upload(byte[] data, String path, String contentType) {
|
||||||
// 腾讯云必需要以"/"开头
|
return upload(new ByteArrayInputStream(data), path, contentType);
|
||||||
if (!path.startsWith("/")) {
|
}
|
||||||
path = "/" + path;
|
|
||||||
|
@Override
|
||||||
|
public UploadResult upload(InputStream inputStream, String path, String contentType) {
|
||||||
|
try {
|
||||||
|
ObjectMetadata metadata = new ObjectMetadata();
|
||||||
|
metadata.setContentType(contentType);
|
||||||
|
client.putObject(new PutObjectRequest(properties.getBucketName(), path, inputStream, metadata));
|
||||||
|
} catch (Exception e) {
|
||||||
|
throw new OssException("上传文件失败,请检查腾讯云配置信息");
|
||||||
}
|
}
|
||||||
// 上传到腾讯云
|
return new UploadResult().setUrl(getEndpointLink() + "/" + path).setFilename(path);
|
||||||
// UploadFileRequest request = new UploadFileRequest(config.getQcloudBucketName(), path, data);
|
|
||||||
// String response = client.uploadFile(request);
|
|
||||||
// Map<String, Object> jsonObject = JsonUtils.parseMap(response);
|
|
||||||
// if (Convert.toInt(jsonObject.get("code")) != 0) {
|
|
||||||
// throw new OssException("文件上传失败," + Convert.toStr(jsonObject.get("message")));
|
|
||||||
// }
|
|
||||||
return new UploadResult().setUrl(properties.getDomain() + "/" + path).setFilename(path);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void delete(String path) {
|
public void delete(String path) {
|
||||||
// path = path.replace(config.getDomain(),"");
|
path = path.replace(getEndpointLink() + "/", "");
|
||||||
// DelFileRequest request = new DelFileRequest(config.getBucketName(), path);
|
try {
|
||||||
// String response = client.delFile(request);
|
client.deleteObject(new DeleteObjectRequest(properties.getBucketName(), path));
|
||||||
// Map<String, Object> jsonObject = JsonUtils.parseMap(response);
|
} catch (Exception e) {
|
||||||
// if (Convert.toInt(jsonObject.get("code")) != 0) {
|
throw new OssException("上传文件失败,请检腾讯云查配置信息");
|
||||||
// throw new OssException("文件删除失败," + Convert.toStr(jsonObject.get("message")));
|
}
|
||||||
// }
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public UploadResult uploadSuffix(byte[] data, String suffix, String contentType) {
|
public UploadResult uploadSuffix(byte[] data, String suffix, String contentType) {
|
||||||
return upload(data, getPath(this.properties.getPrefix(), suffix), contentType);
|
return upload(data, getPath(properties.getPrefix(), suffix), contentType);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public UploadResult uploadSuffix(InputStream inputStream, String suffix, String contentType) {
|
public UploadResult uploadSuffix(InputStream inputStream, String suffix, String contentType) {
|
||||||
return upload(inputStream, getPath(this.properties.getPrefix(), suffix), contentType);
|
return upload(inputStream, getPath(properties.getPrefix(), suffix), contentType);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void afterPropertiesSet() throws Exception {
|
public void afterPropertiesSet() throws Exception {
|
||||||
OssFactory.register(getServiceType(),this);
|
OssFactory.register(getServiceType(),this);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getEndpointLink() {
|
||||||
|
String endpoint = properties.getEndpoint();
|
||||||
|
StringBuilder sb = new StringBuilder(endpoint);
|
||||||
|
if (StrUtil.containsAnyIgnoreCase(endpoint, "http://")) {
|
||||||
|
sb.insert(7, properties.getBucketName() + ".");
|
||||||
|
} else if (StrUtil.containsAnyIgnoreCase(endpoint, "https://")) {
|
||||||
|
sb.insert(8, properties.getBucketName() + ".");
|
||||||
|
} else {
|
||||||
|
throw new OssException("Endpoint配置错误");
|
||||||
|
}
|
||||||
|
return sb.toString();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -49,17 +49,31 @@ public class QiniuCloudStorageServiceImpl extends AbstractCloudStorageService im
|
||||||
Auth auth = Auth.create(
|
Auth auth = Auth.create(
|
||||||
this.properties.getAccessKey(),
|
this.properties.getAccessKey(),
|
||||||
this.properties.getSecretKey());
|
this.properties.getSecretKey());
|
||||||
token = auth.uploadToken(this.properties.getBucketName());
|
String bucketName = this.properties.getBucketName();
|
||||||
|
token = auth.uploadToken(bucketName);
|
||||||
bucketManager = new BucketManager(auth, config);
|
bucketManager = new BucketManager(auth, config);
|
||||||
|
|
||||||
if (!ArrayUtil.contains(bucketManager.buckets(), this.properties.getBucketName())) {
|
if (!ArrayUtil.contains(bucketManager.buckets(), bucketName)) {
|
||||||
bucketManager.createBucket(this.properties.getBucketName(), this.properties.getRegion());
|
bucketManager.createBucket(bucketName, this.properties.getRegion());
|
||||||
}
|
}
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
throw new IllegalArgumentException("七牛云存储配置错误! 请检查系统配置!");
|
throw new IllegalArgumentException("七牛云存储配置错误! 请检查系统配置!");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void createBucket() {
|
||||||
|
try {
|
||||||
|
String bucketName = properties.getBucketName();
|
||||||
|
if (ArrayUtil.contains(bucketManager.buckets(), bucketName)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
bucketManager.createBucket(bucketName, properties.getRegion());
|
||||||
|
} catch (Exception e) {
|
||||||
|
throw new OssException("创建Bucket失败, 请核对七牛云配置信息");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String getServiceType() {
|
public String getServiceType() {
|
||||||
return CloudServiceEnumd.QINIU.getValue();
|
return CloudServiceEnumd.QINIU.getValue();
|
||||||
|
@ -68,21 +82,21 @@ public class QiniuCloudStorageServiceImpl extends AbstractCloudStorageService im
|
||||||
@Override
|
@Override
|
||||||
public UploadResult upload(byte[] data, String path, String contentType) {
|
public UploadResult upload(byte[] data, String path, String contentType) {
|
||||||
try {
|
try {
|
||||||
Response res = uploadManager.put(data, path, token);
|
Response res = uploadManager.put(data, path, token, null, contentType, false);
|
||||||
if (!res.isOK()) {
|
if (!res.isOK()) {
|
||||||
throw new RuntimeException("上传七牛出错:" + res.toString());
|
throw new RuntimeException("上传七牛出错:" + res.toString());
|
||||||
}
|
}
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
throw new OssException("上传文件失败,请核对七牛配置信息");
|
throw new OssException("上传文件失败,请核对七牛配置信息");
|
||||||
}
|
}
|
||||||
return new UploadResult().setUrl(properties.getDomain() + "/" + path).setFilename(path);
|
return new UploadResult().setUrl(getEndpointLink() + "/" + path).setFilename(path);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void delete(String path) {
|
public void delete(String path) {
|
||||||
try {
|
try {
|
||||||
path = path.replace(this.properties.getDomain() + "/", "");
|
path = path.replace(getEndpointLink() + "/", "");
|
||||||
Response res = bucketManager.delete(this.properties.getBucketName(), path);
|
Response res = bucketManager.delete(properties.getBucketName(), path);
|
||||||
if (!res.isOK()) {
|
if (!res.isOK()) {
|
||||||
throw new RuntimeException("删除七牛文件出错:" + res.toString());
|
throw new RuntimeException("删除七牛文件出错:" + res.toString());
|
||||||
}
|
}
|
||||||
|
@ -93,12 +107,12 @@ public class QiniuCloudStorageServiceImpl extends AbstractCloudStorageService im
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public UploadResult uploadSuffix(byte[] data, String suffix, String contentType) {
|
public UploadResult uploadSuffix(byte[] data, String suffix, String contentType) {
|
||||||
return upload(data, getPath(this.properties.getPrefix(), suffix), contentType);
|
return upload(data, getPath(properties.getPrefix(), suffix), contentType);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public UploadResult uploadSuffix(InputStream inputStream, String suffix, String contentType) {
|
public UploadResult uploadSuffix(InputStream inputStream, String suffix, String contentType) {
|
||||||
return upload(inputStream, getPath(this.properties.getPrefix(), suffix), contentType);
|
return upload(inputStream, getPath(properties.getPrefix(), suffix), contentType);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -106,6 +120,11 @@ public class QiniuCloudStorageServiceImpl extends AbstractCloudStorageService im
|
||||||
OssFactory.register(getServiceType(),this);
|
OssFactory.register(getServiceType(),this);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getEndpointLink() {
|
||||||
|
return properties.getDomain();
|
||||||
|
}
|
||||||
|
|
||||||
private Region getRegion(String region) {
|
private Region getRegion(String region) {
|
||||||
switch (region) {
|
switch (region) {
|
||||||
case "z0":
|
case "z0":
|
||||||
|
|
Loading…
Reference in New Issue