|
|
@@ -1,6 +1,7 @@
|
|
|
package cn.reghao.devops.mgr.mgr.aliyun.service;
|
|
|
|
|
|
-import cn.reghao.devops.mgr.config.AppProperties;
|
|
|
+import cn.reghao.devops.mgr.admin.db.repository.OssConfigRepository;
|
|
|
+import cn.reghao.devops.mgr.admin.model.po.OssConfig;
|
|
|
import com.aliyun.oss.OSS;
|
|
|
import com.aliyun.oss.OSSClientBuilder;
|
|
|
import com.aliyun.oss.model.*;
|
|
|
@@ -25,15 +26,25 @@ import java.util.List;
|
|
|
@Slf4j
|
|
|
@Service
|
|
|
public class AliyunOss {
|
|
|
- private final String bucketName;
|
|
|
- private final OSS ossClient;
|
|
|
-
|
|
|
- public AliyunOss(AppProperties appProperties) {
|
|
|
- String endpoint = appProperties.getEndpoint();
|
|
|
- String accessKeyId = appProperties.getAccessKeyId();
|
|
|
- String accessKeySecret = appProperties.getAccessKeySecret();
|
|
|
- this.bucketName = appProperties.getBucketName();
|
|
|
- this.ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);
|
|
|
+ private OSS ossClient;
|
|
|
+ private String bucketName;
|
|
|
+ private final OssConfigRepository ossConfigRepository;
|
|
|
+
|
|
|
+ public AliyunOss(OssConfigRepository ossConfigRepository) {
|
|
|
+ this.ossConfigRepository = ossConfigRepository;
|
|
|
+ }
|
|
|
+
|
|
|
+ private OSS getOssClient() {
|
|
|
+ if (ossClient == null) {
|
|
|
+ OssConfig ossConfig = ossConfigRepository.findAll().get(0);
|
|
|
+ String endpoint = ossConfig.getEndpoint();
|
|
|
+ String accessKeyId = ossConfig.getAccessKeyId();
|
|
|
+ String accessKeySecret = ossConfig.getAccessKeySecret();
|
|
|
+ this.bucketName = ossConfig.getBucketName();
|
|
|
+ this.ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);
|
|
|
+ }
|
|
|
+
|
|
|
+ return ossClient;
|
|
|
}
|
|
|
|
|
|
public void uploadObject(String bucketName, String objectName, File file) throws IOException {
|
|
|
@@ -41,7 +52,7 @@ public class AliyunOss {
|
|
|
ObjectMetadata objectMetadata = new ObjectMetadata();
|
|
|
objectMetadata.setObjectAcl(CannedAccessControlList.PublicRead);
|
|
|
putObjectRequest.setMetadata(objectMetadata);
|
|
|
- ossClient.putObject(putObjectRequest);
|
|
|
+ getOssClient().putObject(putObjectRequest);
|
|
|
}
|
|
|
|
|
|
public void uploadObject(String objectName, File file) throws IOException {
|
|
|
@@ -49,7 +60,7 @@ public class AliyunOss {
|
|
|
ObjectMetadata objectMetadata = new ObjectMetadata();
|
|
|
objectMetadata.setObjectAcl(CannedAccessControlList.PublicRead);
|
|
|
putObjectRequest.setMetadata(objectMetadata);
|
|
|
- ossClient.putObject(putObjectRequest);
|
|
|
+ getOssClient().putObject(putObjectRequest);
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
@@ -112,7 +123,7 @@ public class AliyunOss {
|
|
|
}
|
|
|
|
|
|
public void downloadObject(String objectName) throws IOException {
|
|
|
- OSSObject object = ossClient.getObject(bucketName, objectName);
|
|
|
+ OSSObject object = getOssClient().getObject(bucketName, objectName);
|
|
|
log.info("Content-Type: {}", object.getObjectMetadata().getContentType());
|
|
|
displayTextInputStream(object.getObjectContent());
|
|
|
}
|
|
|
@@ -127,11 +138,11 @@ public class AliyunOss {
|
|
|
}
|
|
|
|
|
|
public void deleteObject(String objectName) {
|
|
|
- ossClient.deleteObject(bucketName, objectName);
|
|
|
+ getOssClient().deleteObject(bucketName, objectName);
|
|
|
}
|
|
|
|
|
|
public void listObjects(String prefix) {
|
|
|
- ObjectListing objectListing = ossClient.listObjects(bucketName, prefix);
|
|
|
+ ObjectListing objectListing = getOssClient().listObjects(bucketName, prefix);
|
|
|
for (OSSObjectSummary objectSummary : objectListing.getObjectSummaries()) {
|
|
|
String objectName = objectSummary.getKey();
|
|
|
long size = objectSummary.getSize();
|
|
|
@@ -143,14 +154,14 @@ public class AliyunOss {
|
|
|
}
|
|
|
|
|
|
public void close() {
|
|
|
- ossClient.shutdown();
|
|
|
+ getOssClient().shutdown();
|
|
|
}
|
|
|
|
|
|
public String getSignedUrl(String objectName) {
|
|
|
int expireSecond = 3600;
|
|
|
long timestamp = System.currentTimeMillis() + expireSecond*1000L;
|
|
|
Date expiration = new Date(timestamp);
|
|
|
- URL url = ossClient.generatePresignedUrl(bucketName, objectName, expiration);
|
|
|
+ URL url = getOssClient().generatePresignedUrl(bucketName, objectName, expiration);
|
|
|
return url.toString();
|
|
|
}
|
|
|
}
|