From 82ade0a045528ac2399dad7150d90de878c505d7 Mon Sep 17 00:00:00 2001 From: chenchen <934298133@qq.com> Date: Mon, 24 Oct 2022 22:06:21 +0800 Subject: [PATCH] =?UTF-8?q?update=20=E4=BC=98=E5=8C=96=20oss=E6=A1=B6?= =?UTF-8?q?=E6=9D=83=E9=99=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/com/ruoyi/oss/core/OssClient.java | 13 ++++++++----- .../java/com/ruoyi/oss/enumd/AccessPolicyType.java | 14 ++++++++++---- .../system/service/impl/SysOssServiceImpl.java | 6 +++--- ruoyi-ui/src/views/system/oss/config.vue | 4 ++++ script/sql/ry_vue_4.X.sql | 12 ++++++------ 5 files changed, 31 insertions(+), 18 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 2d45ddc0d..ae877fcc1 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 @@ -17,6 +17,7 @@ import com.ruoyi.common.utils.DateUtils; import com.ruoyi.common.utils.StringUtils; import com.ruoyi.oss.constant.OssConstant; import com.ruoyi.oss.entity.UploadResult; +import com.ruoyi.oss.enumd.AccessPolicyType; import com.ruoyi.oss.enumd.PolicyType; import com.ruoyi.oss.exception.OssException; import com.ruoyi.oss.properties.OssProperties; @@ -24,7 +25,7 @@ import com.ruoyi.oss.properties.OssProperties; import java.io.ByteArrayInputStream; import java.io.InputStream; import java.net.URL; -import java.time.Instant; +import java.util.Arrays; import java.util.Date; /** @@ -83,7 +84,7 @@ public class OssClient { return; } CreateBucketRequest createBucketRequest = new CreateBucketRequest(bucketName); - createBucketRequest.setCannedAcl(CannedAccessControlList.PublicRead); + createBucketRequest.setCannedAcl(AccessPolicyType.PUBLIC.getAcl()); client.createBucket(createBucketRequest); client.setBucketPolicy(bucketName, getPolicy(bucketName, PolicyType.READ)); } catch (Exception e) { @@ -102,7 +103,7 @@ public class OssClient { metadata.setContentLength(inputStream.available()); PutObjectRequest putObjectRequest = new PutObjectRequest(properties.getBucketName(), path, inputStream, metadata); // 设置上传对象的 Acl 为公共读 - putObjectRequest.setCannedAcl(CannedAccessControlList.PublicRead); + putObjectRequest.setCannedAcl(AccessPolicyType.PUBLIC.getAcl()); client.putObject(putObjectRequest); } catch (Exception e) { throw new OssException("上传文件失败,请检查配置信息:[" + e.getMessage() + "]"); @@ -185,8 +186,10 @@ public class OssClient { * * @return 当前桶权限类型code */ - public String getAccessPolicy() { - return properties.getAccessPolicy(); + public AccessPolicyType getAccessPolicy() { + return Arrays.stream(AccessPolicyType.values()) + .filter(n->StringUtils.equals(n.getType(),properties.getAccessPolicy())) + .findFirst().get(); } 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 38db396f9..993f51c7a 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 @@ -1,5 +1,6 @@ package com.ruoyi.oss.enumd; +import com.amazonaws.services.s3.model.CannedAccessControlList; import lombok.AllArgsConstructor; import lombok.Getter; @@ -15,21 +16,26 @@ public enum AccessPolicyType { /** * private */ - PRIVATE("0"), + PRIVATE("0", CannedAccessControlList.Private), /** * public */ - PUBLIC("1"), + PUBLIC("1", CannedAccessControlList.PublicRead), /** * constum */ - CONSTUM("2"); + CONSTUM("2",CannedAccessControlList.PublicRead); /** - * 类型 + * 桶 权限类型 */ private final String type; + /** + * 文件对象 权限类型 + */ + private final CannedAccessControlList acl; + } 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 61a0b9024..0e372f4b3 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 @@ -137,7 +137,7 @@ public class SysOssServiceImpl implements ISysOssService { oss.setService(storage.getConfigKey()); baseMapper.insert(oss); SysOssVo sysOssVo = new SysOssVo(); - BeanCopyUtils.copy(oss,sysOssVo); + BeanCopyUtils.copy(oss, sysOssVo); return this.matchingUrl(sysOssVo); } @@ -163,9 +163,9 @@ public class SysOssServiceImpl implements ISysOssService { private SysOssVo matchingUrl(SysOssVo oss) { OssClient storage = OssFactory.instance(oss.getService()); /** - * 仅修改桶类型为 private 的 url + * 仅修改桶类型为 private 的URL,临时URL时长为100s */ - if (StringUtils.equals(AccessPolicyType.PRIVATE.getType(), storage.getAccessPolicy())) { + if (AccessPolicyType.PRIVATE == storage.getAccessPolicy()) { oss.setUrl(storage.getPrivateUrl(oss.getFileName(), 100)); } return oss; diff --git a/ruoyi-ui/src/views/system/oss/config.vue b/ruoyi-ui/src/views/system/oss/config.vue index 6110f9d02..ce71ff609 100644 --- a/ruoyi-ui/src/views/system/oss/config.vue +++ b/ruoyi-ui/src/views/system/oss/config.vue @@ -282,6 +282,9 @@ export default { trigger: "blur", }, ], + accessPolicy:[ + { required: true, message: "accessPolicy不能为空", trigger: "blur" } + ] }, }; }, @@ -315,6 +318,7 @@ export default { endpoint: undefined, domain: undefined, isHttps: "N", + accessPolicy: "1", region: undefined, status: "1", remark: undefined, diff --git a/script/sql/ry_vue_4.X.sql b/script/sql/ry_vue_4.X.sql index 170409078..d8bac36f2 100644 --- a/script/sql/ry_vue_4.X.sql +++ b/script/sql/ry_vue_4.X.sql @@ -674,7 +674,7 @@ create table sys_oss_config ( domain varchar(255) default '' comment '自定义域名', is_https char(1) default 'N' comment '是否https(Y=是,N=否)', region varchar(255) default '' comment '域', - access_policy char(1) not null default '1' comment '桶权限类型(0=private 1=public 2=custom)', + access_policy char(1) not null default '1' comment '桶权限类型(0=private 1=public 2=custom)', status char(1) default '1' comment '状态(0=正常,1=停用)', ext1 varchar(255) default '' comment '扩展字段', create_by varchar(64) default '' comment '创建者', @@ -685,8 +685,8 @@ create table sys_oss_config ( primary key (oss_config_id) ) engine=innodb comment='对象存储配置表'; -insert into sys_oss_config values (1, 'minio', 'ruoyi', 'ruoyi123', 'ruoyi', '', '127.0.0.1:9000', '','N', '', '0', '', 'admin', sysdate(), 'admin', sysdate(), NULL, 1); -insert into sys_oss_config values (2, 'qiniu', 'XXXXXXXXXXXXXXX', 'XXXXXXXXXXXXXXX', 'ruoyi', '', 's3-cn-north-1.qiniucs.com', '','N', '', '1', '', 'admin', sysdate(), 'admin', sysdate(), NULL, 1); -insert into sys_oss_config values (3, 'aliyun', 'XXXXXXXXXXXXXXX', 'XXXXXXXXXXXXXXX', 'ruoyi', '', 'oss-cn-beijing.aliyuncs.com', '','N', '', '1', '', 'admin', sysdate(), 'admin', sysdate(), NULL, 1); -insert into sys_oss_config values (4, 'qcloud', 'XXXXXXXXXXXXXXX', 'XXXXXXXXXXXXXXX', 'ruoyi-1250000000', '', 'cos.ap-beijing.myqcloud.com', '','N', 'ap-beijing', '1', '', 'admin', sysdate(), 'admin', sysdate(), NULL, 1); -insert into sys_oss_config values (5, 'image', 'ruoyi', 'ruoyi123', 'ruoyi', 'image', '127.0.0.1:9000', '','N', '', '1', '', 'admin', sysdate(), 'admin', sysdate(), NULL, 1); +insert into sys_oss_config values (1, 'minio', 'ruoyi', 'ruoyi123', 'ruoyi', '', '127.0.0.1:9000', '','N', '', '1' ,'0', '', 'admin', sysdate(), 'admin', sysdate(), NULL); +insert into sys_oss_config values (2, 'qiniu', 'XXXXXXXXXXXXXXX', 'XXXXXXXXXXXXXXX', 'ruoyi', '', 's3-cn-north-1.qiniucs.com', '','N', '', '1' ,'1', '', 'admin', sysdate(), 'admin', sysdate(), NULL); +insert into sys_oss_config values (3, 'aliyun', 'XXXXXXXXXXXXXXX', 'XXXXXXXXXXXXXXX', 'ruoyi', '', 'oss-cn-beijing.aliyuncs.com', '','N', '', '1' ,'1', '', 'admin', sysdate(), 'admin', sysdate(), NULL); +insert into sys_oss_config values (4, 'qcloud', 'XXXXXXXXXXXXXXX', 'XXXXXXXXXXXXXXX', 'ruoyi-1250000000', '', 'cos.ap-beijing.myqcloud.com', '','N', 'ap-beijing', '1' ,'1', '', 'admin', sysdate(), 'admin', sysdate(), NULL); +insert into sys_oss_config values (5, 'image', 'ruoyi', 'ruoyi123', 'ruoyi', 'image', '127.0.0.1:9000', '','N', '', '1' ,'1', '', 'admin', sysdate(), 'admin', sysdate(), NULL);