mirror of
https://gitee.com/dromara/RuoYi-Vue-Plus.git
synced 2026-09-21 10:35:57 +08:00
update 优化 oss桶权限为私密时,列表查看时桶为私密的文件获取临时url(解决桶为private上传时无法预览问题)
This commit is contained in:
parent
84b701da91
commit
c9c4554406
@ -180,6 +180,15 @@ public class OssClient {
|
|||||||
return url.toString();
|
return url.toString();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取当前桶权限类型
|
||||||
|
*
|
||||||
|
* @return 当前桶权限类型code
|
||||||
|
*/
|
||||||
|
public String getAccessPolicy() {
|
||||||
|
return properties.getAccessPolicy();
|
||||||
|
}
|
||||||
|
|
||||||
private static String getPolicy(String bucketName, PolicyType policyType) {
|
private static String getPolicy(String bucketName, PolicyType policyType) {
|
||||||
StringBuilder builder = new StringBuilder();
|
StringBuilder builder = new StringBuilder();
|
||||||
builder.append("{\n\"Statement\": [\n{\n\"Action\": [\n");
|
builder.append("{\n\"Statement\": [\n{\n\"Action\": [\n");
|
||||||
|
|||||||
@ -17,6 +17,7 @@ import com.ruoyi.common.utils.StringUtils;
|
|||||||
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.CacheUtils;
|
||||||
import com.ruoyi.common.utils.redis.RedisUtils;
|
import com.ruoyi.common.utils.redis.RedisUtils;
|
||||||
|
import com.ruoyi.common.utils.spring.SpringUtils;
|
||||||
import com.ruoyi.oss.constant.OssConstant;
|
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;
|
||||||
@ -97,7 +98,7 @@ public class SysOssServiceImpl implements ISysOssService {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void download(Long ossId, HttpServletResponse response) throws IOException {
|
public void download(Long ossId, HttpServletResponse response) throws IOException {
|
||||||
SysOssVo sysOss = this.matchingUrl(this.getById(ossId));
|
SysOssVo sysOss = SpringUtils.getAopProxy(this).matchingUrl(this.getById(ossId));
|
||||||
if (ObjectUtil.isNull(sysOss)) {
|
if (ObjectUtil.isNull(sysOss)) {
|
||||||
throw new ServiceException("文件数据不存在!");
|
throw new ServiceException("文件数据不存在!");
|
||||||
}
|
}
|
||||||
@ -160,15 +161,11 @@ public class SysOssServiceImpl implements ISysOssService {
|
|||||||
* @return oss 匹配Url的OSS对象
|
* @return oss 匹配Url的OSS对象
|
||||||
*/
|
*/
|
||||||
private SysOssVo matchingUrl(SysOssVo oss) {
|
private SysOssVo matchingUrl(SysOssVo oss) {
|
||||||
OssProperties properties = JsonUtils.parseObject(
|
|
||||||
CacheUtils.get(CacheNames.SYS_OSS_CONFIG, oss.getService()).toString(),
|
|
||||||
OssProperties.class
|
|
||||||
);
|
|
||||||
if (properties == null) {
|
|
||||||
throw new OssException("系统异常, '" + oss.getService() + "'配置信息不存在!");
|
|
||||||
}
|
|
||||||
if (StringUtils.equals(AccessPolicyType.PRIVATE.getType(), properties.getAccessPolicy())) {
|
|
||||||
OssClient storage = OssFactory.instance(oss.getService());
|
OssClient storage = OssFactory.instance(oss.getService());
|
||||||
|
/**
|
||||||
|
* 仅修改桶类型为 private 的 url
|
||||||
|
*/
|
||||||
|
if (StringUtils.equals(AccessPolicyType.PRIVATE.getType(), storage.getAccessPolicy())) {
|
||||||
oss.setUrl(storage.getPrivateUrl(oss.getFileName(), 100));
|
oss.setUrl(storage.getPrivateUrl(oss.getFileName(), 100));
|
||||||
}
|
}
|
||||||
return oss;
|
return oss;
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user