新增腾讯云存储
This commit is contained in:
parent
cec13aac1e
commit
fae70a623f
|
@ -0,0 +1,18 @@
|
|||
package net.maku.storage.properties;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
/**
|
||||
* 腾讯云存储配置项
|
||||
*
|
||||
* @author 阿沐 babamu@126.com
|
||||
*/
|
||||
@Data
|
||||
public class TencentStorageProperties {
|
||||
private String appId;
|
||||
private String region;
|
||||
private String endPoint;
|
||||
private String accessKey;
|
||||
private String secretKey;
|
||||
private String bucketName;
|
||||
}
|
|
@ -0,0 +1,66 @@
|
|||
package net.maku.storage.service;
|
||||
|
||||
import com.qcloud.cos.COSClient;
|
||||
import com.qcloud.cos.ClientConfig;
|
||||
import com.qcloud.cos.auth.BasicCOSCredentials;
|
||||
import com.qcloud.cos.auth.COSCredentials;
|
||||
import com.qcloud.cos.http.HttpProtocol;
|
||||
import com.qcloud.cos.model.ObjectMetadata;
|
||||
import com.qcloud.cos.model.PutObjectRequest;
|
||||
import com.qcloud.cos.model.PutObjectResult;
|
||||
import com.qcloud.cos.region.Region;
|
||||
import net.maku.framework.common.exception.FastException;
|
||||
import net.maku.storage.properties.StorageProperties;
|
||||
|
||||
import java.io.ByteArrayInputStream;
|
||||
import java.io.InputStream;
|
||||
|
||||
/**
|
||||
* 腾讯云存储
|
||||
*
|
||||
* @author 阿沐 babamu@126.com
|
||||
*/
|
||||
public class TencentStorageService extends StorageService {
|
||||
private final COSCredentials cred;
|
||||
private final ClientConfig clientConfig;
|
||||
|
||||
public TencentStorageService(StorageProperties properties) {
|
||||
this.properties = properties;
|
||||
|
||||
cred = new BasicCOSCredentials(properties.getTencent().getAccessKey(), properties.getTencent().getSecretKey());
|
||||
|
||||
clientConfig = new ClientConfig(new Region(properties.getTencent().getRegion()));
|
||||
clientConfig.setHttpProtocol(HttpProtocol.https);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String upload(byte[] data, String path) {
|
||||
return upload(new ByteArrayInputStream(data), path);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String upload(InputStream inputStream, String path) {
|
||||
try {
|
||||
COSClient cosClient = new COSClient(cred, clientConfig);
|
||||
|
||||
// 存储桶名称,格式:BucketName-APPID
|
||||
String bucketName = properties.getTencent().getBucketName() + "-" + properties.getTencent().getAppId();
|
||||
|
||||
ObjectMetadata metadata = new ObjectMetadata();
|
||||
metadata.setContentLength(inputStream.available());
|
||||
|
||||
PutObjectRequest request = new PutObjectRequest(bucketName, path, inputStream, metadata);
|
||||
PutObjectResult result = cosClient.putObject(request);
|
||||
|
||||
cosClient.shutdown();
|
||||
if (result.getETag() == null) {
|
||||
throw new FastException("上传文件失败,请检查配置信息");
|
||||
}
|
||||
} catch (Exception e) {
|
||||
throw new FastException("上传文件失败:", e);
|
||||
}
|
||||
|
||||
return properties.getConfig().getDomain() + "/" + path;
|
||||
}
|
||||
|
||||
}
|
Loading…
Reference in New Issue
Block a user