From 4b59b9eb571ab1008eaa30895a516d0053afdd61 Mon Sep 17 00:00:00 2001 From: ruibaby Date: Mon, 18 Nov 2019 20:12:49 +0800 Subject: [PATCH] feat: support set protocol for cloud storage. --- .../app/handler/file/AliYunFileHandler.java | 43 +++++++++-------- .../app/handler/file/BaiDuYunFileHandler.java | 46 ++++++++++--------- .../app/handler/file/QnYunFileHandler.java | 5 +- .../handler/file/TencentYunFileHandler.java | 40 ++++++++-------- .../app/handler/file/UpYunFileHandler.java | 35 +++++++------- .../model/properties/AliYunProperties.java | 11 +++-- .../model/properties/BaiDuYunProperties.java | 9 +++- .../app/model/properties/QnYunProperties.java | 30 +++++++++++- .../properties/TencentYunProperties.java | 9 +++- .../app/model/properties/UpYunProperties.java | 9 +++- 10 files changed, 147 insertions(+), 90 deletions(-) diff --git a/src/main/java/run/halo/app/handler/file/AliYunFileHandler.java b/src/main/java/run/halo/app/handler/file/AliYunFileHandler.java index d13a1289c..1a1e4f978 100644 --- a/src/main/java/run/halo/app/handler/file/AliYunFileHandler.java +++ b/src/main/java/run/halo/app/handler/file/AliYunFileHandler.java @@ -26,7 +26,7 @@ import java.util.Objects; * * @author MyFaith * @author ryanwang - * @date 2019-04-04 00:06:13 + * @date 2019-04-04 */ @Slf4j @Component @@ -43,27 +43,30 @@ public class AliYunFileHandler implements FileHandler { Assert.notNull(file, "Multipart file must not be null"); // Get config - String ossDomain = optionService.getByPropertyOrDefault(AliYunProperties.OSS_DOMAIN, String.class, ""); - String ossEndPoint = optionService.getByPropertyOfNonNull(AliYunProperties.OSS_ENDPOINT).toString(); - String ossAccessKey = optionService.getByPropertyOfNonNull(AliYunProperties.OSS_ACCESS_KEY).toString(); - String ossAccessSecret = optionService.getByPropertyOfNonNull(AliYunProperties.OSS_ACCESS_SECRET).toString(); - String ossBucketName = optionService.getByPropertyOfNonNull(AliYunProperties.OSS_BUCKET_NAME).toString(); - String ossSource = StringUtils.join("https://", ossBucketName, "." + ossEndPoint); - String ossStyleRule = optionService.getByPropertyOrDefault(AliYunProperties.OSS_STYLE_RULE, String.class, ""); - String ossThumbnailStyleRule = optionService.getByPropertyOrDefault(AliYunProperties.OSS_THUMBNAIL_STYLE_RULE, String.class, ""); + String protocol = optionService.getByPropertyOfNonNull(AliYunProperties.OSS_PROTOCOL).toString(); + String domain = optionService.getByPropertyOrDefault(AliYunProperties.OSS_DOMAIN, String.class, ""); + String endPoint = optionService.getByPropertyOfNonNull(AliYunProperties.OSS_ENDPOINT).toString(); + String accessKey = optionService.getByPropertyOfNonNull(AliYunProperties.OSS_ACCESS_KEY).toString(); + String accessSecret = optionService.getByPropertyOfNonNull(AliYunProperties.OSS_ACCESS_SECRET).toString(); + String bucketName = optionService.getByPropertyOfNonNull(AliYunProperties.OSS_BUCKET_NAME).toString(); + String source = StringUtils.join(protocol, bucketName, "." + endPoint); + String styleRule = optionService.getByPropertyOrDefault(AliYunProperties.OSS_STYLE_RULE, String.class, ""); + String thumbnailStyleRule = optionService.getByPropertyOrDefault(AliYunProperties.OSS_THUMBNAIL_STYLE_RULE, String.class, ""); // Init OSS client - OSS ossClient = new OSSClientBuilder().build(ossEndPoint, ossAccessKey, ossAccessSecret); + OSS ossClient = new OSSClientBuilder().build(endPoint, accessKey, accessSecret); + + domain = protocol + domain; try { String basename = FilenameUtils.getBasename(file.getOriginalFilename()); String extension = FilenameUtils.getExtension(file.getOriginalFilename()); String timestamp = String.valueOf(System.currentTimeMillis()); String upFilePath = StringUtils.join(basename, "_", timestamp, ".", extension); - String filePath = StringUtils.join(StringUtils.appendIfMissing(StringUtils.isNotBlank(ossDomain) ? ossDomain : ossSource, "/"), upFilePath); + String filePath = StringUtils.join(StringUtils.appendIfMissing(StringUtils.isNotBlank(domain) ? domain : source, "/"), upFilePath); // Upload - PutObjectResult putObjectResult = ossClient.putObject(ossBucketName, upFilePath, file.getInputStream()); + PutObjectResult putObjectResult = ossClient.putObject(bucketName, upFilePath, file.getInputStream()); if (putObjectResult == null) { throw new FileOperationException("上传附件 " + file.getOriginalFilename() + " 到阿里云失败 "); } @@ -71,7 +74,7 @@ public class AliYunFileHandler implements FileHandler { // Response result UploadResult uploadResult = new UploadResult(); uploadResult.setFilename(basename); - uploadResult.setFilePath(StringUtils.isBlank(ossStyleRule) ? filePath : filePath + ossStyleRule); + uploadResult.setFilePath(StringUtils.isBlank(styleRule) ? filePath : filePath + styleRule); uploadResult.setKey(upFilePath); uploadResult.setMediaType(MediaType.valueOf(Objects.requireNonNull(file.getContentType()))); uploadResult.setSuffix(extension); @@ -82,7 +85,7 @@ public class AliYunFileHandler implements FileHandler { BufferedImage image = ImageIO.read(file.getInputStream()); uploadResult.setWidth(image.getWidth()); uploadResult.setHeight(image.getHeight()); - uploadResult.setThumbPath(StringUtils.isBlank(ossThumbnailStyleRule) ? filePath : filePath + ossThumbnailStyleRule); + uploadResult.setThumbPath(StringUtils.isBlank(thumbnailStyleRule) ? filePath : filePath + thumbnailStyleRule); } return uploadResult; @@ -105,16 +108,16 @@ public class AliYunFileHandler implements FileHandler { Assert.notNull(key, "File key must not be blank"); // Get config - String ossEndPoint = optionService.getByPropertyOfNonNull(AliYunProperties.OSS_ENDPOINT).toString(); - String ossAccessKey = optionService.getByPropertyOfNonNull(AliYunProperties.OSS_ACCESS_KEY).toString(); - String ossAccessSecret = optionService.getByPropertyOfNonNull(AliYunProperties.OSS_ACCESS_SECRET).toString(); - String ossBucketName = optionService.getByPropertyOfNonNull(AliYunProperties.OSS_BUCKET_NAME).toString(); + String endPoint = optionService.getByPropertyOfNonNull(AliYunProperties.OSS_ENDPOINT).toString(); + String accessKey = optionService.getByPropertyOfNonNull(AliYunProperties.OSS_ACCESS_KEY).toString(); + String accessSecret = optionService.getByPropertyOfNonNull(AliYunProperties.OSS_ACCESS_SECRET).toString(); + String bucketName = optionService.getByPropertyOfNonNull(AliYunProperties.OSS_BUCKET_NAME).toString(); // Init OSS client - OSS ossClient = new OSSClientBuilder().build(ossEndPoint, ossAccessKey, ossAccessSecret); + OSS ossClient = new OSSClientBuilder().build(endPoint, accessKey, accessSecret); try { - ossClient.deleteObject(new DeleteObjectsRequest(ossBucketName).withKey(key)); + ossClient.deleteObject(new DeleteObjectsRequest(bucketName).withKey(key)); } catch (Exception e) { throw new FileOperationException("附件 " + key + " 从阿里云删除失败", e); } finally { diff --git a/src/main/java/run/halo/app/handler/file/BaiDuYunFileHandler.java b/src/main/java/run/halo/app/handler/file/BaiDuYunFileHandler.java index e01873641..8113be3ed 100644 --- a/src/main/java/run/halo/app/handler/file/BaiDuYunFileHandler.java +++ b/src/main/java/run/halo/app/handler/file/BaiDuYunFileHandler.java @@ -26,6 +26,7 @@ import java.util.Objects; * BaiDuYun file handler. * * @author wangya + * @author ryanwang * @date 2019-07-20 */ @Slf4j @@ -43,31 +44,34 @@ public class BaiDuYunFileHandler implements FileHandler { Assert.notNull(file, "Multipart file must not be null"); // Get config - String bosDomain = optionService.getByPropertyOrDefault(BaiDuYunProperties.BOS_DOMAIN, String.class, ""); - String bosEndPoint = optionService.getByPropertyOfNonNull(BaiDuYunProperties.BOS_ENDPOINT).toString(); - String bosAccessKey = optionService.getByPropertyOfNonNull(BaiDuYunProperties.BOS_ACCESS_KEY).toString(); - String bosSecretKey = optionService.getByPropertyOfNonNull(BaiDuYunProperties.BOS_SECRET_KEY).toString(); - String bosBucketName = optionService.getByPropertyOfNonNull(BaiDuYunProperties.BOS_BUCKET_NAME).toString(); - String bosStyleRule = optionService.getByPropertyOrDefault(BaiDuYunProperties.BOS_STYLE_RULE, String.class, ""); - String bosThumbnailStyleRule = optionService.getByPropertyOrDefault(BaiDuYunProperties.BOS_THUMBNAIL_STYLE_RULE, String.class, ""); - String bosSource = StringUtils.join("https://", bosBucketName, "." + bosEndPoint); + Object protocol = optionService.getByPropertyOfNonNull(BaiDuYunProperties.BOS_PROTOCOL); + String domain = optionService.getByPropertyOrDefault(BaiDuYunProperties.BOS_DOMAIN, String.class, ""); + String endPoint = optionService.getByPropertyOfNonNull(BaiDuYunProperties.BOS_ENDPOINT).toString(); + String accessKey = optionService.getByPropertyOfNonNull(BaiDuYunProperties.BOS_ACCESS_KEY).toString(); + String secretKey = optionService.getByPropertyOfNonNull(BaiDuYunProperties.BOS_SECRET_KEY).toString(); + String bucketName = optionService.getByPropertyOfNonNull(BaiDuYunProperties.BOS_BUCKET_NAME).toString(); + String styleRule = optionService.getByPropertyOrDefault(BaiDuYunProperties.BOS_STYLE_RULE, String.class, ""); + String thumbnailStyleRule = optionService.getByPropertyOrDefault(BaiDuYunProperties.BOS_THUMBNAIL_STYLE_RULE, String.class, ""); + String source = StringUtils.join(protocol, bucketName, "." + endPoint); BosClientConfiguration config = new BosClientConfiguration(); - config.setCredentials(new DefaultBceCredentials(bosAccessKey, bosSecretKey)); - config.setEndpoint(bosEndPoint); + config.setCredentials(new DefaultBceCredentials(accessKey, secretKey)); + config.setEndpoint(endPoint); // Init OSS client BosClient client = new BosClient(config); + domain = protocol + domain; + try { String basename = FilenameUtils.getBasename(file.getOriginalFilename()); String extension = FilenameUtils.getExtension(file.getOriginalFilename()); String timestamp = String.valueOf(System.currentTimeMillis()); String upFilePath = StringUtils.join(basename, "_", timestamp, ".", extension); - String filePath = StringUtils.join(StringUtils.appendIfMissing(StringUtils.isNotBlank(bosDomain) ? bosDomain : bosSource, "/"), upFilePath); + String filePath = StringUtils.join(StringUtils.appendIfMissing(StringUtils.isNotBlank(domain) ? domain : source, "/"), upFilePath); // Upload - PutObjectResponse putObjectResponseFromInputStream = client.putObject(bosBucketName, upFilePath, file.getInputStream()); + PutObjectResponse putObjectResponseFromInputStream = client.putObject(bucketName, upFilePath, file.getInputStream()); if (putObjectResponseFromInputStream == null) { throw new FileOperationException("上传附件 " + file.getOriginalFilename() + " 到百度云失败 "); } @@ -75,7 +79,7 @@ public class BaiDuYunFileHandler implements FileHandler { // Response result UploadResult uploadResult = new UploadResult(); uploadResult.setFilename(basename); - uploadResult.setFilePath(StringUtils.isBlank(bosStyleRule) ? filePath : filePath + bosStyleRule); + uploadResult.setFilePath(StringUtils.isBlank(styleRule) ? filePath : filePath + styleRule); uploadResult.setKey(upFilePath); uploadResult.setMediaType(MediaType.valueOf(Objects.requireNonNull(file.getContentType()))); uploadResult.setSuffix(extension); @@ -86,7 +90,7 @@ public class BaiDuYunFileHandler implements FileHandler { BufferedImage image = ImageIO.read(file.getInputStream()); uploadResult.setWidth(image.getWidth()); uploadResult.setHeight(image.getHeight()); - uploadResult.setThumbPath(StringUtils.isBlank(bosThumbnailStyleRule) ? filePath : filePath + bosThumbnailStyleRule); + uploadResult.setThumbPath(StringUtils.isBlank(thumbnailStyleRule) ? filePath : filePath + thumbnailStyleRule); } return uploadResult; @@ -102,20 +106,20 @@ public class BaiDuYunFileHandler implements FileHandler { Assert.notNull(key, "File key must not be blank"); // Get config - String bosEndPoint = optionService.getByPropertyOfNonNull(BaiDuYunProperties.BOS_ENDPOINT).toString(); - String bosAccessKey = optionService.getByPropertyOfNonNull(BaiDuYunProperties.BOS_ACCESS_KEY).toString(); - String bosSecretKey = optionService.getByPropertyOfNonNull(BaiDuYunProperties.BOS_SECRET_KEY).toString(); - String bosBucketName = optionService.getByPropertyOfNonNull(BaiDuYunProperties.BOS_BUCKET_NAME).toString(); + String endPoint = optionService.getByPropertyOfNonNull(BaiDuYunProperties.BOS_ENDPOINT).toString(); + String accessKey = optionService.getByPropertyOfNonNull(BaiDuYunProperties.BOS_ACCESS_KEY).toString(); + String secretKey = optionService.getByPropertyOfNonNull(BaiDuYunProperties.BOS_SECRET_KEY).toString(); + String bucketName = optionService.getByPropertyOfNonNull(BaiDuYunProperties.BOS_BUCKET_NAME).toString(); BosClientConfiguration config = new BosClientConfiguration(); - config.setCredentials(new DefaultBceCredentials(bosAccessKey, bosSecretKey)); - config.setEndpoint(bosEndPoint); + config.setCredentials(new DefaultBceCredentials(accessKey, secretKey)); + config.setEndpoint(endPoint); // Init OSS client BosClient client = new BosClient(config); try { - client.deleteObject(bosBucketName, key); + client.deleteObject(bucketName, key); } catch (Exception e) { throw new FileOperationException("附件 " + key + " 从百度云删除失败", e); } finally { diff --git a/src/main/java/run/halo/app/handler/file/QnYunFileHandler.java b/src/main/java/run/halo/app/handler/file/QnYunFileHandler.java index c9907e32a..4ab94adca 100644 --- a/src/main/java/run/halo/app/handler/file/QnYunFileHandler.java +++ b/src/main/java/run/halo/app/handler/file/QnYunFileHandler.java @@ -36,7 +36,7 @@ import static run.halo.app.handler.file.FileHandler.isImageType; * * @author johnniang * @author ryanwang - * @date 3/27/19 + * @date 2019-03-27 */ @Slf4j @Component @@ -57,6 +57,7 @@ public class QnYunFileHandler implements FileHandler { String accessKey = optionService.getByPropertyOfNonNull(QnYunProperties.OSS_ACCESS_KEY).toString(); String secretKey = optionService.getByPropertyOfNonNull(QnYunProperties.OSS_SECRET_KEY).toString(); String bucket = optionService.getByPropertyOfNonNull(QnYunProperties.OSS_BUCKET).toString(); + String protocol = optionService.getByPropertyOfNonNull(QnYunProperties.OSS_PROTOCOL).toString(); String domain = optionService.getByPropertyOfNonNull(QnYunProperties.OSS_DOMAIN).toString(); String styleRule = optionService.getByPropertyOrDefault(QnYunProperties.OSS_STYLE_RULE, String.class, ""); String thumbnailStyleRule = optionService.getByPropertyOrDefault(QnYunProperties.OSS_THUMBNAIL_STYLE_RULE, String.class, ""); @@ -99,7 +100,7 @@ public class QnYunFileHandler implements FileHandler { QiNiuPutSet putSet = JsonUtils.jsonToObject(response.bodyString(), QiNiuPutSet.class); // Get file full path - String filePath = StringUtils.appendIfMissing(domain, "/") + putSet.getHash(); + String filePath = protocol + StringUtils.appendIfMissing(domain, "/") + putSet.getHash(); // Build upload result UploadResult result = new UploadResult(); diff --git a/src/main/java/run/halo/app/handler/file/TencentYunFileHandler.java b/src/main/java/run/halo/app/handler/file/TencentYunFileHandler.java index 1abdb97c5..ebdb93cf0 100644 --- a/src/main/java/run/halo/app/handler/file/TencentYunFileHandler.java +++ b/src/main/java/run/halo/app/handler/file/TencentYunFileHandler.java @@ -47,32 +47,34 @@ public class TencentYunFileHandler implements FileHandler { Assert.notNull(file, "Multipart file must not be null"); // Get config - String cosDomain = optionService.getByPropertyOrDefault(TencentYunProperties.COS_DOMAIN, String.class, ""); - String cosRegion = optionService.getByPropertyOfNonNull(TencentYunProperties.COS_REGION).toString(); - String cosSecretId = optionService.getByPropertyOfNonNull(TencentYunProperties.COS_SECRET_ID).toString(); - String cosSecretKey = optionService.getByPropertyOfNonNull(TencentYunProperties.COS_SECRET_KEY).toString(); - String cosBucketName = optionService.getByPropertyOfNonNull(TencentYunProperties.COS_BUCKET_NAME).toString(); - String cosSource = StringUtils.join("https://", cosBucketName, ".cos." + cosRegion + ".myqcloud.com"); + String protocol = optionService.getByPropertyOfNonNull(TencentYunProperties.COS_PROTOCOL).toString(); + String domain = optionService.getByPropertyOrDefault(TencentYunProperties.COS_DOMAIN, String.class, ""); + String region = optionService.getByPropertyOfNonNull(TencentYunProperties.COS_REGION).toString(); + String secretId = optionService.getByPropertyOfNonNull(TencentYunProperties.COS_SECRET_ID).toString(); + String secretKey = optionService.getByPropertyOfNonNull(TencentYunProperties.COS_SECRET_KEY).toString(); + String bucketName = optionService.getByPropertyOfNonNull(TencentYunProperties.COS_BUCKET_NAME).toString(); + String source = StringUtils.join(protocol, bucketName, ".cos." + region + ".myqcloud.com"); //get file attribute long size = file.getSize(); String contentType = file.getContentType(); - COSCredentials cred = new BasicCOSCredentials(cosSecretId, cosSecretKey); - Region region = new Region(cosRegion); - ClientConfig clientConfig = new ClientConfig(region); + COSCredentials cred = new BasicCOSCredentials(secretId, secretKey); + Region regionConfig = new Region(region); + ClientConfig clientConfig = new ClientConfig(regionConfig); // Init OSS client COSClient cosClient = new COSClient(cred, clientConfig); + domain = protocol + domain; try { String basename = FilenameUtils.getBasename(file.getOriginalFilename()); String extension = FilenameUtils.getExtension(file.getOriginalFilename()); String timestamp = String.valueOf(System.currentTimeMillis()); String upFilePath = StringUtils.join(basename, "_", timestamp, ".", extension); - String filePath = StringUtils.join(StringUtils.appendIfMissing(StringUtils.isNotBlank(cosDomain) ? cosDomain : cosSource, "/"), upFilePath); + String filePath = StringUtils.join(StringUtils.appendIfMissing(StringUtils.isNotBlank(domain) ? domain : source, "/"), upFilePath); // Upload ObjectMetadata objectMetadata = new ObjectMetadata(); @@ -80,7 +82,7 @@ public class TencentYunFileHandler implements FileHandler { objectMetadata.setContentLength(size); // 设置 Content type, 默认是 application/octet-stream objectMetadata.setContentType(contentType); - PutObjectResult putObjectResponseFromInputStream = cosClient.putObject(cosBucketName, upFilePath, file.getInputStream(), objectMetadata); + PutObjectResult putObjectResponseFromInputStream = cosClient.putObject(bucketName, upFilePath, file.getInputStream(), objectMetadata); if (putObjectResponseFromInputStream == null) { throw new FileOperationException("上传附件 " + file.getOriginalFilename() + " 到腾讯云失败 "); } @@ -115,20 +117,20 @@ public class TencentYunFileHandler implements FileHandler { Assert.notNull(key, "File key must not be blank"); // Get config - String cosRegion = optionService.getByPropertyOfNonNull(TencentYunProperties.COS_REGION).toString(); - String cosSecretId = optionService.getByPropertyOfNonNull(TencentYunProperties.COS_SECRET_ID).toString(); - String cosSecretKey = optionService.getByPropertyOfNonNull(TencentYunProperties.COS_SECRET_KEY).toString(); - String cosBucketName = optionService.getByPropertyOfNonNull(TencentYunProperties.COS_BUCKET_NAME).toString(); + String region = optionService.getByPropertyOfNonNull(TencentYunProperties.COS_REGION).toString(); + String secretId = optionService.getByPropertyOfNonNull(TencentYunProperties.COS_SECRET_ID).toString(); + String secretKey = optionService.getByPropertyOfNonNull(TencentYunProperties.COS_SECRET_KEY).toString(); + String bucketName = optionService.getByPropertyOfNonNull(TencentYunProperties.COS_BUCKET_NAME).toString(); - COSCredentials cred = new BasicCOSCredentials(cosSecretId, cosSecretKey); - Region region = new Region(cosRegion); - ClientConfig clientConfig = new ClientConfig(region); + COSCredentials cred = new BasicCOSCredentials(secretId, secretKey); + Region regionConfig = new Region(region); + ClientConfig clientConfig = new ClientConfig(regionConfig); // Init OSS client COSClient cosClient = new COSClient(cred, clientConfig); try { - cosClient.deleteObject(cosBucketName, key); + cosClient.deleteObject(bucketName, key); } catch (Exception e) { throw new FileOperationException("附件 " + key + " 从腾讯云删除失败", e); } finally { diff --git a/src/main/java/run/halo/app/handler/file/UpYunFileHandler.java b/src/main/java/run/halo/app/handler/file/UpYunFileHandler.java index 0942c84f4..6d6a02704 100644 --- a/src/main/java/run/halo/app/handler/file/UpYunFileHandler.java +++ b/src/main/java/run/halo/app/handler/file/UpYunFileHandler.java @@ -24,7 +24,7 @@ import java.util.Objects; * * @author johnniang * @author ryanwang - * @date 3/27/19 + * @date 2019-03-27 */ @Slf4j @Component @@ -40,17 +40,18 @@ public class UpYunFileHandler implements FileHandler { public UploadResult upload(MultipartFile file) { Assert.notNull(file, "Multipart file must not be null"); - String ossSource = optionService.getByPropertyOfNonNull(UpYunProperties.OSS_SOURCE).toString(); - String ossPassword = optionService.getByPropertyOfNonNull(UpYunProperties.OSS_PASSWORD).toString(); - String ossBucket = optionService.getByPropertyOfNonNull(UpYunProperties.OSS_BUCKET).toString(); - String ossDomain = optionService.getByPropertyOfNonNull(UpYunProperties.OSS_DOMAIN).toString(); - String ossOperator = optionService.getByPropertyOfNonNull(UpYunProperties.OSS_OPERATOR).toString(); + String source = optionService.getByPropertyOfNonNull(UpYunProperties.OSS_SOURCE).toString(); + String password = optionService.getByPropertyOfNonNull(UpYunProperties.OSS_PASSWORD).toString(); + String bucket = optionService.getByPropertyOfNonNull(UpYunProperties.OSS_BUCKET).toString(); + String protocol = optionService.getByPropertyOfNonNull(UpYunProperties.OSS_PROTOCOL).toString(); + String domain = optionService.getByPropertyOfNonNull(UpYunProperties.OSS_DOMAIN).toString(); + String operator = optionService.getByPropertyOfNonNull(UpYunProperties.OSS_OPERATOR).toString(); // style rule can be null - String ossStyleRule = optionService.getByPropertyOrDefault(UpYunProperties.OSS_STYLE_RULE, String.class, ""); - String ossThumbnailStyleRule = optionService.getByPropertyOrDefault(UpYunProperties.OSS_THUMBNAIL_STYLE_RULE, String.class, ""); + String styleRule = optionService.getByPropertyOrDefault(UpYunProperties.OSS_STYLE_RULE, String.class, ""); + String thumbnailStyleRule = optionService.getByPropertyOrDefault(UpYunProperties.OSS_THUMBNAIL_STYLE_RULE, String.class, ""); // Create up yun - UpYun upYun = new UpYun(ossBucket, ossOperator, ossPassword); + UpYun upYun = new UpYun(bucket, operator, password); upYun.setDebug(log.isDebugEnabled()); upYun.setTimeout(60); upYun.setApiDomain(UpYun.ED_AUTO); @@ -63,7 +64,7 @@ public class UpYunFileHandler implements FileHandler { // Get md5 value of the file String md5OfFile = DigestUtils.md5DigestAsHex(file.getInputStream()); // Build file path - String upFilePath = StringUtils.appendIfMissing(ossSource, "/") + md5OfFile + '.' + extension; + String upFilePath = StringUtils.appendIfMissing(source, "/") + md5OfFile + '.' + extension; // Set md5Content upYun.setContentMD5(md5OfFile); // Write file @@ -72,12 +73,12 @@ public class UpYunFileHandler implements FileHandler { throw new FileOperationException("上传附件 " + file.getOriginalFilename() + " 到又拍云失败" + upFilePath); } - String filePath = StringUtils.removeEnd(ossDomain, "/") + upFilePath; + String filePath = protocol + StringUtils.removeEnd(domain, "/") + upFilePath; // Build upload result UploadResult uploadResult = new UploadResult(); uploadResult.setFilename(basename); - uploadResult.setFilePath(StringUtils.isBlank(ossStyleRule) ? filePath : filePath + ossStyleRule); + uploadResult.setFilePath(StringUtils.isBlank(styleRule) ? filePath : filePath + styleRule); uploadResult.setKey(upFilePath); uploadResult.setMediaType(MediaType.valueOf(Objects.requireNonNull(file.getContentType()))); uploadResult.setSuffix(extension); @@ -88,7 +89,7 @@ public class UpYunFileHandler implements FileHandler { BufferedImage image = ImageIO.read(file.getInputStream()); uploadResult.setWidth(image.getWidth()); uploadResult.setHeight(image.getHeight()); - uploadResult.setThumbPath(StringUtils.isBlank(ossThumbnailStyleRule) ? filePath : filePath + ossThumbnailStyleRule); + uploadResult.setThumbPath(StringUtils.isBlank(thumbnailStyleRule) ? filePath : filePath + thumbnailStyleRule); } return uploadResult; @@ -102,12 +103,12 @@ public class UpYunFileHandler implements FileHandler { Assert.notNull(key, "File key must not be blank"); // Get config - String ossPassword = optionService.getByPropertyOfNonNull(UpYunProperties.OSS_PASSWORD).toString(); - String ossBucket = optionService.getByPropertyOfNonNull(UpYunProperties.OSS_BUCKET).toString(); - String ossOperator = optionService.getByPropertyOfNonNull(UpYunProperties.OSS_OPERATOR).toString(); + String password = optionService.getByPropertyOfNonNull(UpYunProperties.OSS_PASSWORD).toString(); + String bucket = optionService.getByPropertyOfNonNull(UpYunProperties.OSS_BUCKET).toString(); + String operator = optionService.getByPropertyOfNonNull(UpYunProperties.OSS_OPERATOR).toString(); // Create up yun - UpYun upYun = new UpYun(ossBucket, ossOperator, ossPassword); + UpYun upYun = new UpYun(bucket, operator, password); // Set api domain with ED_AUTO upYun.setApiDomain(UpYun.ED_AUTO); diff --git a/src/main/java/run/halo/app/model/properties/AliYunProperties.java b/src/main/java/run/halo/app/model/properties/AliYunProperties.java index c7ae609e2..90b66849b 100644 --- a/src/main/java/run/halo/app/model/properties/AliYunProperties.java +++ b/src/main/java/run/halo/app/model/properties/AliYunProperties.java @@ -1,18 +1,23 @@ package run.halo.app.model.properties; /** - * AliYun properties. + * Ali yun oss properties. * * @author MyFaith * @author ryanwang - * @date 2019-04-04 00:00:56 + * @date 2019-04-04 */ public enum AliYunProperties implements PropertyEnum { + /** + * Aliyun oss domain protocol + */ + OSS_PROTOCOL("oss_aliyun_domain_protocol", String.class, "https://"), + /** * Aliyun oss domain */ - OSS_DOMAIN("oss_aliyun_domain",String.class,""), + OSS_DOMAIN("oss_aliyun_domain", String.class, ""), /** * Aliyun oss endpoint. diff --git a/src/main/java/run/halo/app/model/properties/BaiDuYunProperties.java b/src/main/java/run/halo/app/model/properties/BaiDuYunProperties.java index 48655fe59..cd7b6251f 100644 --- a/src/main/java/run/halo/app/model/properties/BaiDuYunProperties.java +++ b/src/main/java/run/halo/app/model/properties/BaiDuYunProperties.java @@ -1,7 +1,7 @@ package run.halo.app.model.properties; /** - * BaiDuYun properties. + * Baidu yun bos properties. * * @author wangya * @author ryanwang @@ -9,10 +9,15 @@ package run.halo.app.model.properties; */ public enum BaiDuYunProperties implements PropertyEnum { + /** + * Baidu yun bos domain protocol. + */ + BOS_PROTOCOL("bos_baiduyun_domain_protocol", String.class, "https://"), + /** * Baidu yun bos domain. */ - BOS_DOMAIN("bos_baiduyun_domain",String.class,""), + BOS_DOMAIN("bos_baiduyun_domain", String.class, ""), /** * Baidu yun bos endpoint. diff --git a/src/main/java/run/halo/app/model/properties/QnYunProperties.java b/src/main/java/run/halo/app/model/properties/QnYunProperties.java index a12caf9be..e477adf6f 100644 --- a/src/main/java/run/halo/app/model/properties/QnYunProperties.java +++ b/src/main/java/run/halo/app/model/properties/QnYunProperties.java @@ -1,26 +1,52 @@ package run.halo.app.model.properties; /** - * Qi niu yun properties. + * Qi niu yun oss properties. * * @author johnniang * @author ryanwang - * @date 3/26/19 + * @date 2019-03-26 */ public enum QnYunProperties implements PropertyEnum { + /** + * Qiniu yun oss zone. + */ OSS_ZONE("oss_qiniu_zone", String.class, "auto"), + /** + * Qiniu yun oss access key. + */ OSS_ACCESS_KEY("oss_qiniu_access_key", String.class, ""), + /** + * Qiniu yun oss secret key. + */ OSS_SECRET_KEY("oss_qiniu_secret_key", String.class, ""), + /** + * Qiniu yun oss domain protocol. + */ + OSS_PROTOCOL("oss_qiniu_domain_protocol", String.class, "https://"), + + /** + * Qiniu yun oss domain. + */ OSS_DOMAIN("oss_qiniu_domain", String.class, ""), + /** + * Qiniu yun oss bucket. + */ OSS_BUCKET("oss_qiniu_bucket", String.class, ""), + /** + * Qiniu yun oss style rule. + */ OSS_STYLE_RULE("oss_qiniu_style_rule", String.class, ""), + /** + * Qiniu yun oss thumbnail style rule. + */ OSS_THUMBNAIL_STYLE_RULE("oss_qiniu_thumbnail_style_rule", String.class, ""); private final String value; diff --git a/src/main/java/run/halo/app/model/properties/TencentYunProperties.java b/src/main/java/run/halo/app/model/properties/TencentYunProperties.java index cead0171b..275bb470c 100644 --- a/src/main/java/run/halo/app/model/properties/TencentYunProperties.java +++ b/src/main/java/run/halo/app/model/properties/TencentYunProperties.java @@ -1,7 +1,7 @@ package run.halo.app.model.properties; /** - * TencentYun properties. + * Tencent yun cos properties. * * @author wangya * @author ryanwang @@ -9,10 +9,15 @@ package run.halo.app.model.properties; */ public enum TencentYunProperties implements PropertyEnum { + /** + * Tencentyun cos domain protocol. + */ + COS_PROTOCOL("cos_tencentyun_domain_protocol", String.class, "https://"), + /** * Tencentyun cos domain. */ - COS_DOMAIN("cos_tencentyun_domain",String.class,""), + COS_DOMAIN("cos_tencentyun_domain", String.class, ""), /** * Tencentyun cos endpoint. diff --git a/src/main/java/run/halo/app/model/properties/UpYunProperties.java b/src/main/java/run/halo/app/model/properties/UpYunProperties.java index 8073cf587..7ce4ef61c 100644 --- a/src/main/java/run/halo/app/model/properties/UpYunProperties.java +++ b/src/main/java/run/halo/app/model/properties/UpYunProperties.java @@ -1,11 +1,11 @@ package run.halo.app.model.properties; /** - * You pai yun properties. + * You pai yun oss properties. * * @author johnniang * @author ryanwang - * @date 3/27/19 + * @date 2019-03-27 */ public enum UpYunProperties implements PropertyEnum { @@ -24,6 +24,11 @@ public enum UpYunProperties implements PropertyEnum { */ OSS_BUCKET("oss_upyun_bucket", String.class, ""), + /** + * upyun oss domain protocol + */ + OSS_PROTOCOL("oss_upyun_domain_protocol",String.class,"https://"), + /** * upyun oss domain */