From 3aa42c00fa363409470f6ab83cf288fd4f394d39 Mon Sep 17 00:00:00 2001 From: zhaojun <873019219@qq.com> Date: Sun, 5 Mar 2023 15:33:38 +0800 Subject: [PATCH] =?UTF-8?q?:bug:=20=E4=BF=AE=E5=A4=8D=E4=B8=83=E7=89=9B?= =?UTF-8?q?=E5=AF=B9=E7=A7=81=E6=9C=89=E7=A9=BA=E9=97=B4=E4=BD=BF=E7=94=A8?= =?UTF-8?q?=E8=87=AA=E5=AE=9A=E4=B9=89=E5=9F=9F=E5=90=8D=E5=90=8E=E6=97=A0?= =?UTF-8?q?=E6=B3=95=E6=AD=A3=E5=B8=B8=E4=B8=8B=E8=BD=BD=E7=9A=84=20bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/QiniuServiceImpl.java | 27 +++++++++++++++++-- 1 file changed, 25 insertions(+), 2 deletions(-) diff --git a/src/main/java/im/zhaojun/zfile/module/storage/service/impl/QiniuServiceImpl.java b/src/main/java/im/zhaojun/zfile/module/storage/service/impl/QiniuServiceImpl.java index a2a6599..b6cdea0 100644 --- a/src/main/java/im/zhaojun/zfile/module/storage/service/impl/QiniuServiceImpl.java +++ b/src/main/java/im/zhaojun/zfile/module/storage/service/impl/QiniuServiceImpl.java @@ -1,6 +1,8 @@ package im.zhaojun.zfile.module.storage.service.impl; import cn.hutool.core.exceptions.ExceptionUtil; +import cn.hutool.core.util.BooleanUtil; +import cn.hutool.core.util.StrUtil; import com.amazonaws.auth.AWSStaticCredentialsProvider; import com.amazonaws.auth.BasicAWSCredentials; import com.amazonaws.client.builder.AwsClientBuilder; @@ -29,6 +31,8 @@ public class QiniuServiceImpl extends AbstractS3BaseFileService { private BucketManager bucketManager; + private Auth auth; + @Override public void init() { BasicAWSCredentials credentials = new BasicAWSCredentials(param.getAccessKey(), param.getSecretKey()); @@ -37,7 +41,7 @@ public class QiniuServiceImpl extends AbstractS3BaseFileService { .withEndpointConfiguration(new AwsClientBuilder.EndpointConfiguration(param.getEndPoint(), "kodo")).build(); Configuration cfg = new Configuration(Region.autoRegion()); - Auth auth = Auth.create(param.getAccessKey(), param.getSecretKey()); + auth = Auth.create(param.getAccessKey(), param.getSecretKey()); bucketManager = new BucketManager(auth, cfg); setUploadCors(); @@ -65,7 +69,26 @@ public class QiniuServiceImpl extends AbstractS3BaseFileService { } catch (QiniuException e) { throw ExceptionUtil.wrapRuntime(e); } - + } + @Override + public String getDownloadUrl(String pathAndName) { + String domain = param.getDomain(); + + Integer tokenTime = param.getTokenTime(); + if (param.getTokenTime() == null || param.getTokenTime() < 1) { + tokenTime = 1800; + } + + String fullPath = StringUtils.concatTrimStartSlashes(param.getBasePath() + pathAndName); + // 如果不是私有空间, 且指定了加速域名, 则使用 qiniu 的 sdk 获取下载链接 + // (使用 s3 sdk 获取到的下载链接替换自动加速域名后无法访问, 故这里使用 qiniu sdk). + if (BooleanUtil.isTrue(param.isPrivate()) && StrUtil.isNotEmpty(domain)) { + String customDomainFullPath = StringUtils.removeDuplicateSlashes(domain + "/" + StringUtils.encodeAllIgnoreSlashes(fullPath)); + return auth.privateDownloadUrl(customDomainFullPath, tokenTime); + } + + return super.getDownloadUrl(pathAndName); + } } \ No newline at end of file