mirror of
https://gitee.com/dromara/RuoYi-Vue-Plus.git
synced 2026-09-20 18:15:56 +08:00
update 优化 oss桶权限为私密时,列表查看时桶为私密的文件获取临时url(解决桶为private上传时无法预览问题)
This commit is contained in:
parent
84b701da91
commit
c9c4554406
@ -61,7 +61,7 @@ public class OssClient {
|
||||
.withClientConfiguration(clientConfig)
|
||||
.withCredentials(credentialsProvider)
|
||||
.disableChunkedEncoding();
|
||||
if (!StringUtils.containsAny(properties.getEndpoint(), OssConstant.CLOUD_SERVICE)){
|
||||
if (!StringUtils.containsAny(properties.getEndpoint(), OssConstant.CLOUD_SERVICE)) {
|
||||
// minio 使用https限制使用域名访问 需要此配置 站点填域名
|
||||
build.enablePathStyleAccess();
|
||||
}
|
||||
@ -142,7 +142,7 @@ public class OssClient {
|
||||
String endpoint = properties.getEndpoint();
|
||||
String header = OssConstant.IS_HTTPS.equals(properties.getIsHttps()) ? "https://" : "http://";
|
||||
// 云服务商直接返回
|
||||
if (StringUtils.containsAny(endpoint, OssConstant.CLOUD_SERVICE)){
|
||||
if (StringUtils.containsAny(endpoint, OssConstant.CLOUD_SERVICE)) {
|
||||
if (StringUtils.isNotBlank(domain)) {
|
||||
return header + domain;
|
||||
}
|
||||
@ -180,6 +180,15 @@ public class OssClient {
|
||||
return url.toString();
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取当前桶权限类型
|
||||
*
|
||||
* @return 当前桶权限类型code
|
||||
*/
|
||||
public String getAccessPolicy() {
|
||||
return properties.getAccessPolicy();
|
||||
}
|
||||
|
||||
private static String getPolicy(String bucketName, PolicyType policyType) {
|
||||
StringBuilder builder = new StringBuilder();
|
||||
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.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;
|
||||
@ -97,7 +98,7 @@ public class SysOssServiceImpl implements ISysOssService {
|
||||
|
||||
@Override
|
||||
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)) {
|
||||
throw new ServiceException("文件数据不存在!");
|
||||
}
|
||||
@ -160,15 +161,11 @@ public class SysOssServiceImpl implements ISysOssService {
|
||||
* @return oss 匹配Url的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));
|
||||
}
|
||||
return oss;
|
||||
|
||||
Loading…
Reference in New Issue
Block a user