mirror of
https://gitee.com/dromara/RuoYi-Vue-Plus.git
synced 2026-09-21 02:25: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)
|
.withClientConfiguration(clientConfig)
|
||||||
.withCredentials(credentialsProvider)
|
.withCredentials(credentialsProvider)
|
||||||
.disableChunkedEncoding();
|
.disableChunkedEncoding();
|
||||||
if (!StringUtils.containsAny(properties.getEndpoint(), OssConstant.CLOUD_SERVICE)){
|
if (!StringUtils.containsAny(properties.getEndpoint(), OssConstant.CLOUD_SERVICE)) {
|
||||||
// minio 使用https限制使用域名访问 需要此配置 站点填域名
|
// minio 使用https限制使用域名访问 需要此配置 站点填域名
|
||||||
build.enablePathStyleAccess();
|
build.enablePathStyleAccess();
|
||||||
}
|
}
|
||||||
@ -142,7 +142,7 @@ public class OssClient {
|
|||||||
String endpoint = properties.getEndpoint();
|
String endpoint = properties.getEndpoint();
|
||||||
String header = OssConstant.IS_HTTPS.equals(properties.getIsHttps()) ? "https://" : "http://";
|
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)) {
|
if (StringUtils.isNotBlank(domain)) {
|
||||||
return header + domain;
|
return header + domain;
|
||||||
}
|
}
|
||||||
@ -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(
|
OssClient storage = OssFactory.instance(oss.getService());
|
||||||
CacheUtils.get(CacheNames.SYS_OSS_CONFIG, oss.getService()).toString(),
|
/**
|
||||||
OssProperties.class
|
* 仅修改桶类型为 private 的 url
|
||||||
);
|
*/
|
||||||
if (properties == null) {
|
if (StringUtils.equals(AccessPolicyType.PRIVATE.getType(), storage.getAccessPolicy())) {
|
||||||
throw new OssException("系统异常, '" + oss.getService() + "'配置信息不存在!");
|
|
||||||
}
|
|
||||||
if (StringUtils.equals(AccessPolicyType.PRIVATE.getType(), properties.getAccessPolicy())) {
|
|
||||||
OssClient storage = OssFactory.instance(oss.getService());
|
|
||||||
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