From 78376892ae805ce9664aab618e55d15b838ee192 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=96=AF=E7=8B=82=E7=9A=84=E7=8B=AE=E5=AD=90li?= <15040126243@163.com> Date: Thu, 3 Nov 2022 11:09:48 +0800 Subject: [PATCH] =?UTF-8?q?update=20=E4=BC=98=E5=8C=96=20pr240=20=E7=9B=B8?= =?UTF-8?q?=E5=85=B3=E4=BB=A3=E7=A0=81=20=E8=A7=A3=E5=86=B3=E6=A1=B6?= =?UTF-8?q?=E6=9D=83=E9=99=90=E4=B8=8D=E7=94=9F=E6=95=88=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/ruoyi/oss/core/OssClient.java | 14 ++++----- .../com/ruoyi/oss/enumd/AccessPolicyType.java | 22 +++++++++++--- .../service/impl/SysOssServiceImpl.java | 13 ++------- ruoyi-ui/src/views/system/oss/config.vue | 29 +++++-------------- 4 files changed, 33 insertions(+), 45 deletions(-) diff --git a/ruoyi-oss/src/main/java/com/ruoyi/oss/core/OssClient.java b/ruoyi-oss/src/main/java/com/ruoyi/oss/core/OssClient.java index ae877fcc1..93716c10a 100644 --- a/ruoyi-oss/src/main/java/com/ruoyi/oss/core/OssClient.java +++ b/ruoyi-oss/src/main/java/com/ruoyi/oss/core/OssClient.java @@ -25,7 +25,6 @@ import com.ruoyi.oss.properties.OssProperties; import java.io.ByteArrayInputStream; import java.io.InputStream; import java.net.URL; -import java.util.Arrays; import java.util.Date; /** @@ -84,9 +83,10 @@ public class OssClient { return; } CreateBucketRequest createBucketRequest = new CreateBucketRequest(bucketName); - createBucketRequest.setCannedAcl(AccessPolicyType.PUBLIC.getAcl()); + AccessPolicyType accessPolicy = getAccessPolicy(); + createBucketRequest.setCannedAcl(accessPolicy.getAcl()); client.createBucket(createBucketRequest); - client.setBucketPolicy(bucketName, getPolicy(bucketName, PolicyType.READ)); + client.setBucketPolicy(bucketName, getPolicy(bucketName, accessPolicy.getPolicyType())); } catch (Exception e) { throw new OssException("创建Bucket失败, 请核对配置信息:[" + e.getMessage() + "]"); } @@ -103,7 +103,7 @@ public class OssClient { metadata.setContentLength(inputStream.available()); PutObjectRequest putObjectRequest = new PutObjectRequest(properties.getBucketName(), path, inputStream, metadata); // 设置上传对象的 Acl 为公共读 - putObjectRequest.setCannedAcl(AccessPolicyType.PUBLIC.getAcl()); + putObjectRequest.setCannedAcl(getAccessPolicy().getAcl()); client.putObject(putObjectRequest); } catch (Exception e) { throw new OssException("上传文件失败,请检查配置信息:[" + e.getMessage() + "]"); @@ -176,7 +176,7 @@ public class OssClient { GeneratePresignedUrlRequest generatePresignedUrlRequest = new GeneratePresignedUrlRequest(properties.getBucketName(), objectKey) .withMethod(HttpMethod.GET) - .withExpiration(new Date(System.currentTimeMillis() + 1000 * second)); + .withExpiration(new Date(System.currentTimeMillis() + 1000L * second)); URL url = client.generatePresignedUrl(generatePresignedUrlRequest); return url.toString(); } @@ -187,9 +187,7 @@ public class OssClient { * @return 当前桶权限类型code */ public AccessPolicyType getAccessPolicy() { - return Arrays.stream(AccessPolicyType.values()) - .filter(n->StringUtils.equals(n.getType(),properties.getAccessPolicy())) - .findFirst().get(); + return AccessPolicyType.getByType(properties.getAccessPolicy()); } private static String getPolicy(String bucketName, PolicyType policyType) { diff --git a/ruoyi-oss/src/main/java/com/ruoyi/oss/enumd/AccessPolicyType.java b/ruoyi-oss/src/main/java/com/ruoyi/oss/enumd/AccessPolicyType.java index 993f51c7a..1cae67094 100644 --- a/ruoyi-oss/src/main/java/com/ruoyi/oss/enumd/AccessPolicyType.java +++ b/ruoyi-oss/src/main/java/com/ruoyi/oss/enumd/AccessPolicyType.java @@ -16,17 +16,17 @@ public enum AccessPolicyType { /** * private */ - PRIVATE("0", CannedAccessControlList.Private), + PRIVATE("0", CannedAccessControlList.Private, PolicyType.WRITE), /** * public */ - PUBLIC("1", CannedAccessControlList.PublicRead), + PUBLIC("1", CannedAccessControlList.PublicRead, PolicyType.READ), /** - * constum + * custom */ - CONSTUM("2",CannedAccessControlList.PublicRead); + CUSTOM("2",CannedAccessControlList.PublicRead, PolicyType.READ); /** * 桶 权限类型 @@ -38,4 +38,18 @@ public enum AccessPolicyType { */ private final CannedAccessControlList acl; + /** + * 桶策略类型 + */ + private final PolicyType policyType; + + public static AccessPolicyType getByType(String type) { + for (AccessPolicyType value : values()) { + if (value.getType().equals(type)) { + return value; + } + } + throw new RuntimeException("'type' not found By " + type); + } + } diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysOssServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysOssServiceImpl.java index 60f2de77a..f3bb1365b 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysOssServiceImpl.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysOssServiceImpl.java @@ -12,20 +12,13 @@ import com.ruoyi.common.core.domain.PageQuery; import com.ruoyi.common.core.page.TableDataInfo; import com.ruoyi.common.exception.ServiceException; import com.ruoyi.common.utils.BeanCopyUtils; -import com.ruoyi.common.utils.JsonUtils; import com.ruoyi.common.utils.StringUtils; -import com.ruoyi.common.utils.spring.SpringUtils; import com.ruoyi.common.utils.file.FileUtils; -import com.ruoyi.common.utils.redis.CacheUtils; -import com.ruoyi.common.utils.redis.RedisUtils; import com.ruoyi.common.utils.spring.SpringUtils; -import com.ruoyi.oss.constant.OssConstant; import com.ruoyi.oss.core.OssClient; import com.ruoyi.oss.entity.UploadResult; import com.ruoyi.oss.enumd.AccessPolicyType; -import com.ruoyi.oss.exception.OssException; import com.ruoyi.oss.factory.OssFactory; -import com.ruoyi.oss.properties.OssProperties; import com.ruoyi.system.domain.SysOss; import com.ruoyi.system.domain.bo.SysOssBo; import com.ruoyi.system.domain.vo.SysOssVo; @@ -163,11 +156,9 @@ public class SysOssServiceImpl implements ISysOssService { */ private SysOssVo matchingUrl(SysOssVo oss) { OssClient storage = OssFactory.instance(oss.getService()); - /** - * 仅修改桶类型为 private 的URL,临时URL时长为100s - */ + // 仅修改桶类型为 private 的URL,临时URL时长为120s if (AccessPolicyType.PRIVATE == storage.getAccessPolicy()) { - oss.setUrl(storage.getPrivateUrl(oss.getFileName(), 100)); + oss.setUrl(storage.getPrivateUrl(oss.getFileName(), 120)); } return oss; } diff --git a/ruoyi-ui/src/views/system/oss/config.vue b/ruoyi-ui/src/views/system/oss/config.vue index ce71ff609..51f991351 100644 --- a/ruoyi-ui/src/views/system/oss/config.vue +++ b/ruoyi-ui/src/views/system/oss/config.vue @@ -80,7 +80,7 @@ - +