update OSS模块 更新 阿里云 腾讯云 相关代码 重构部分代码结构

This commit is contained in:
疯狂的狮子li 2021-07-23 18:37:39 +08:00
parent 22fd00832d
commit 7114fc2720
10 changed files with 256 additions and 60 deletions

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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;

View File

@ -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();
} }

View File

@ -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();
} }

View File

@ -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();
} }
} }

View File

@ -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) {

View File

@ -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();
}
} }

View File

@ -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":