From c4a17985a48ef315e510eaac2886afc30a0826ee Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=B5=B5=E4=BF=8A?= <873019219@qq.com> Date: Sun, 11 Apr 2021 15:49:33 +0800 Subject: [PATCH] =?UTF-8?q?:sparkles:=20=E4=BC=98=E5=8C=96=E4=B8=8B?= =?UTF-8?q?=E8=BD=BD=E5=9C=B0=E5=9D=80=E8=8E=B7=E5=8F=96=E9=80=BB=E8=BE=91?= =?UTF-8?q?=EF=BC=8C=E7=9B=B4=E6=8E=A5=E5=88=97=E8=A1=A8=E6=97=B6=E4=B8=8D?= =?UTF-8?q?=E7=9B=B4=E6=8E=A5=E8=B0=83=E7=94=A8=20API=20=E8=8E=B7=E5=8F=96?= =?UTF-8?q?=E4=B8=8B=E8=BD=BD=E5=9C=B0=E5=9D=80=EF=BC=8C=E8=AE=BF=E9=97=AE?= =?UTF-8?q?=E5=8D=95=E6=96=87=E4=BB=B6=E6=97=B6=E5=86=8D=E8=B0=83=E7=94=A8?= =?UTF-8?q?=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../base/AbstractS3BaseFileService.java | 7 ++++- .../im/zhaojun/zfile/util/StringUtils.java | 29 +++++++++++++++++++ 2 files changed, 35 insertions(+), 1 deletion(-) diff --git a/src/main/java/im/zhaojun/zfile/service/base/AbstractS3BaseFileService.java b/src/main/java/im/zhaojun/zfile/service/base/AbstractS3BaseFileService.java index 88dd0ac..d28c9fb 100644 --- a/src/main/java/im/zhaojun/zfile/service/base/AbstractS3BaseFileService.java +++ b/src/main/java/im/zhaojun/zfile/service/base/AbstractS3BaseFileService.java @@ -73,7 +73,11 @@ public abstract class AbstractS3BaseFileService extends AbstractBaseFileService fileItemDTO.setTime(s.getLastModified()); fileItemDTO.setType(FileTypeEnum.FILE); fileItemDTO.setPath(path); - fileItemDTO.setUrl(getDownloadUrl(StringUtils.concatUrl(path, fileItemDTO.getName()))); + + String fullPathAndName = StringUtils.concatUrl(path, fileItemDTO.getName()); + String directlink = StringUtils.generatorLink(driveId, fullPathAndName); + fileItemDTO.setUrl(directlink); + fileItemList.add(fileItemDTO); } @@ -129,6 +133,7 @@ public abstract class AbstractS3BaseFileService extends AbstractBaseFileService for (FileItemDTO fileItemDTO : list) { String fullPath = StringUtils.concatUrl(fileItemDTO.getPath(), fileItemDTO.getName()); if (Objects.equals(fullPath, path)) { + fileItemDTO.setUrl(getDownloadUrl(path)); return fileItemDTO; } } diff --git a/src/main/java/im/zhaojun/zfile/util/StringUtils.java b/src/main/java/im/zhaojun/zfile/util/StringUtils.java index 677cbbc..b6a3233 100644 --- a/src/main/java/im/zhaojun/zfile/util/StringUtils.java +++ b/src/main/java/im/zhaojun/zfile/util/StringUtils.java @@ -3,6 +3,7 @@ package im.zhaojun.zfile.util; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.URLUtil; import im.zhaojun.zfile.model.constant.ZFileConstant; +import im.zhaojun.zfile.service.SystemConfigService; /** * @author zhaojun @@ -114,4 +115,32 @@ public class StringUtils { public static String replaceHost(String originUrl, String replaceHost) { return concatPath(replaceHost, URLUtil.getPath(originUrl)); } + + /** + * 拼接 URL,并去除重复的分隔符 '/',但不会影响 http:// 和 https:// 这种头部 + * @param strs 拼接的字符数组 + * @return 拼接结果 + */ + public static String concatUrl(String... strs) { + StringBuilder sb = new StringBuilder(); + for (int i = 0; i < strs.length; i++) { + sb.append(strs[i]); + if (i != strs.length - 1) { + sb.append(DELIMITER); + } + } + return removeDuplicateSeparator(sb.toString()); + } + + /** + * 拼接文件直链生成 URL + * @param driveId 驱动器 ID + * @param fullPath 文件全路径 + * @return 生成结果 + */ + public static String generatorLink(Integer driveId, String fullPath) { + SystemConfigService systemConfigService = SpringContextHolder.getBean(SystemConfigService.class); + String domain = systemConfigService.getDomain(); + return concatUrl(domain, "directlink", String.valueOf(driveId), fullPath); + } }