mirror of
https://gitee.com/dromara/RuoYi-Vue-Plus.git
synced 2026-09-21 10:35:57 +08:00
update 优化 pr240 相关代码 解决桶权限不生效问题
This commit is contained in:
parent
d088b864f0
commit
78376892ae
@ -25,7 +25,6 @@ import com.ruoyi.oss.properties.OssProperties;
|
|||||||
import java.io.ByteArrayInputStream;
|
import java.io.ByteArrayInputStream;
|
||||||
import java.io.InputStream;
|
import java.io.InputStream;
|
||||||
import java.net.URL;
|
import java.net.URL;
|
||||||
import java.util.Arrays;
|
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -84,9 +83,10 @@ public class OssClient {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
CreateBucketRequest createBucketRequest = new CreateBucketRequest(bucketName);
|
CreateBucketRequest createBucketRequest = new CreateBucketRequest(bucketName);
|
||||||
createBucketRequest.setCannedAcl(AccessPolicyType.PUBLIC.getAcl());
|
AccessPolicyType accessPolicy = getAccessPolicy();
|
||||||
|
createBucketRequest.setCannedAcl(accessPolicy.getAcl());
|
||||||
client.createBucket(createBucketRequest);
|
client.createBucket(createBucketRequest);
|
||||||
client.setBucketPolicy(bucketName, getPolicy(bucketName, PolicyType.READ));
|
client.setBucketPolicy(bucketName, getPolicy(bucketName, accessPolicy.getPolicyType()));
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
throw new OssException("创建Bucket失败, 请核对配置信息:[" + e.getMessage() + "]");
|
throw new OssException("创建Bucket失败, 请核对配置信息:[" + e.getMessage() + "]");
|
||||||
}
|
}
|
||||||
@ -103,7 +103,7 @@ public class OssClient {
|
|||||||
metadata.setContentLength(inputStream.available());
|
metadata.setContentLength(inputStream.available());
|
||||||
PutObjectRequest putObjectRequest = new PutObjectRequest(properties.getBucketName(), path, inputStream, metadata);
|
PutObjectRequest putObjectRequest = new PutObjectRequest(properties.getBucketName(), path, inputStream, metadata);
|
||||||
// 设置上传对象的 Acl 为公共读
|
// 设置上传对象的 Acl 为公共读
|
||||||
putObjectRequest.setCannedAcl(AccessPolicyType.PUBLIC.getAcl());
|
putObjectRequest.setCannedAcl(getAccessPolicy().getAcl());
|
||||||
client.putObject(putObjectRequest);
|
client.putObject(putObjectRequest);
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
throw new OssException("上传文件失败,请检查配置信息:[" + e.getMessage() + "]");
|
throw new OssException("上传文件失败,请检查配置信息:[" + e.getMessage() + "]");
|
||||||
@ -176,7 +176,7 @@ public class OssClient {
|
|||||||
GeneratePresignedUrlRequest generatePresignedUrlRequest =
|
GeneratePresignedUrlRequest generatePresignedUrlRequest =
|
||||||
new GeneratePresignedUrlRequest(properties.getBucketName(), objectKey)
|
new GeneratePresignedUrlRequest(properties.getBucketName(), objectKey)
|
||||||
.withMethod(HttpMethod.GET)
|
.withMethod(HttpMethod.GET)
|
||||||
.withExpiration(new Date(System.currentTimeMillis() + 1000 * second));
|
.withExpiration(new Date(System.currentTimeMillis() + 1000L * second));
|
||||||
URL url = client.generatePresignedUrl(generatePresignedUrlRequest);
|
URL url = client.generatePresignedUrl(generatePresignedUrlRequest);
|
||||||
return url.toString();
|
return url.toString();
|
||||||
}
|
}
|
||||||
@ -187,9 +187,7 @@ public class OssClient {
|
|||||||
* @return 当前桶权限类型code
|
* @return 当前桶权限类型code
|
||||||
*/
|
*/
|
||||||
public AccessPolicyType getAccessPolicy() {
|
public AccessPolicyType getAccessPolicy() {
|
||||||
return Arrays.stream(AccessPolicyType.values())
|
return AccessPolicyType.getByType(properties.getAccessPolicy());
|
||||||
.filter(n->StringUtils.equals(n.getType(),properties.getAccessPolicy()))
|
|
||||||
.findFirst().get();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private static String getPolicy(String bucketName, PolicyType policyType) {
|
private static String getPolicy(String bucketName, PolicyType policyType) {
|
||||||
|
|||||||
@ -16,17 +16,17 @@ public enum AccessPolicyType {
|
|||||||
/**
|
/**
|
||||||
* private
|
* private
|
||||||
*/
|
*/
|
||||||
PRIVATE("0", CannedAccessControlList.Private),
|
PRIVATE("0", CannedAccessControlList.Private, PolicyType.WRITE),
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* public
|
* 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 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);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -12,20 +12,13 @@ import com.ruoyi.common.core.domain.PageQuery;
|
|||||||
import com.ruoyi.common.core.page.TableDataInfo;
|
import com.ruoyi.common.core.page.TableDataInfo;
|
||||||
import com.ruoyi.common.exception.ServiceException;
|
import com.ruoyi.common.exception.ServiceException;
|
||||||
import com.ruoyi.common.utils.BeanCopyUtils;
|
import com.ruoyi.common.utils.BeanCopyUtils;
|
||||||
import com.ruoyi.common.utils.JsonUtils;
|
|
||||||
import com.ruoyi.common.utils.StringUtils;
|
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.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.common.utils.spring.SpringUtils;
|
||||||
import com.ruoyi.oss.constant.OssConstant;
|
|
||||||
import com.ruoyi.oss.core.OssClient;
|
import com.ruoyi.oss.core.OssClient;
|
||||||
import com.ruoyi.oss.entity.UploadResult;
|
import com.ruoyi.oss.entity.UploadResult;
|
||||||
import com.ruoyi.oss.enumd.AccessPolicyType;
|
import com.ruoyi.oss.enumd.AccessPolicyType;
|
||||||
import com.ruoyi.oss.exception.OssException;
|
|
||||||
import com.ruoyi.oss.factory.OssFactory;
|
import com.ruoyi.oss.factory.OssFactory;
|
||||||
import com.ruoyi.oss.properties.OssProperties;
|
|
||||||
import com.ruoyi.system.domain.SysOss;
|
import com.ruoyi.system.domain.SysOss;
|
||||||
import com.ruoyi.system.domain.bo.SysOssBo;
|
import com.ruoyi.system.domain.bo.SysOssBo;
|
||||||
import com.ruoyi.system.domain.vo.SysOssVo;
|
import com.ruoyi.system.domain.vo.SysOssVo;
|
||||||
@ -163,11 +156,9 @@ public class SysOssServiceImpl implements ISysOssService {
|
|||||||
*/
|
*/
|
||||||
private SysOssVo matchingUrl(SysOssVo oss) {
|
private SysOssVo matchingUrl(SysOssVo oss) {
|
||||||
OssClient storage = OssFactory.instance(oss.getService());
|
OssClient storage = OssFactory.instance(oss.getService());
|
||||||
/**
|
// 仅修改桶类型为 private 的URL,临时URL时长为120s
|
||||||
* 仅修改桶类型为 private 的URL,临时URL时长为100s
|
|
||||||
*/
|
|
||||||
if (AccessPolicyType.PRIVATE == storage.getAccessPolicy()) {
|
if (AccessPolicyType.PRIVATE == storage.getAccessPolicy()) {
|
||||||
oss.setUrl(storage.getPrivateUrl(oss.getFileName(), 100));
|
oss.setUrl(storage.getPrivateUrl(oss.getFileName(), 120));
|
||||||
}
|
}
|
||||||
return oss;
|
return oss;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -216,21 +216,6 @@ export default {
|
|||||||
isHttpsOptions: [],
|
isHttpsOptions: [],
|
||||||
// 状态(0正常 1停用)字典
|
// 状态(0正常 1停用)字典
|
||||||
statusOptions: [],
|
statusOptions: [],
|
||||||
// 桶权限类型
|
|
||||||
accessPolicyOptions: [
|
|
||||||
{
|
|
||||||
label: 'private',
|
|
||||||
value: 0
|
|
||||||
},
|
|
||||||
{
|
|
||||||
label: 'public',
|
|
||||||
value: 1
|
|
||||||
},
|
|
||||||
{
|
|
||||||
label: 'custom',
|
|
||||||
value: 2
|
|
||||||
}
|
|
||||||
],
|
|
||||||
// 查询参数
|
// 查询参数
|
||||||
queryParams: {
|
queryParams: {
|
||||||
pageNum: 1,
|
pageNum: 1,
|
||||||
@ -416,7 +401,7 @@ export default {
|
|||||||
} else if (row.accessPolicy === "1") {
|
} else if (row.accessPolicy === "1") {
|
||||||
return <span class="el-tag el-tag--success el-tag--medium el-tag--light">public</span>
|
return <span class="el-tag el-tag--success el-tag--medium el-tag--light">public</span>
|
||||||
} else if (row.accessPolicy === "2") {
|
} else if (row.accessPolicy === "2") {
|
||||||
return <span class="el-tag el-tag--medium el-tag--light" > constum </span>
|
return <span class="el-tag el-tag--medium el-tag--light">custom</span>
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user