diff --git a/common/common-core/src/main/java/apelet/common/core/upload/BaseUpDownloader.java b/common/common-core/src/main/java/apelet/common/core/upload/BaseUpDownloader.java index d0c768c..17b86e2 100644 --- a/common/common-core/src/main/java/apelet/common/core/upload/BaseUpDownloader.java +++ b/common/common-core/src/main/java/apelet/common/core/upload/BaseUpDownloader.java @@ -80,11 +80,16 @@ public abstract class BaseUpDownloader { } else { downloadUri = serviceContextPath + uri + "/download"; } + // 存储名统一为 {uuid}.{后缀},各存储实现直接使用,避免同名文件互相覆盖。 + String extension = FilenameUtils.getExtension(originalFilename); StringBuilder filenameBuilder = new StringBuilder(64); - filenameBuilder.append(MyCommonUtil.generateUuid()) - .append(".").append(originalFilename); + filenameBuilder.append(MyCommonUtil.generateUuid()); + if (StringUtils.isNotBlank(extension)) { + filenameBuilder.append(".").append(extension); + } responseInfo.setDownloadUri(downloadUri); - responseInfo.setFilename(originalFilename); + responseInfo.setFileRealName(originalFilename); + responseInfo.setFilename(filenameBuilder.toString()); } /** diff --git a/common/common-core/src/main/java/apelet/common/core/upload/LocalUpDownloader.java b/common/common-core/src/main/java/apelet/common/core/upload/LocalUpDownloader.java index 5dccc6f..e4660f7 100644 --- a/common/common-core/src/main/java/apelet/common/core/upload/LocalUpDownloader.java +++ b/common/common-core/src/main/java/apelet/common/core/upload/LocalUpDownloader.java @@ -2,7 +2,6 @@ package apelet.common.core.upload; import apelet.common.core.constant.ErrorCodeEnum; import apelet.common.core.exception.MyRuntimeException; -import apelet.common.core.util.MyCommonUtil; import cn.hutool.core.util.BooleanUtil; import com.alibaba.fastjson.JSON; import lombok.extern.slf4j.Slf4j; @@ -15,7 +14,10 @@ import org.springframework.web.multipart.MultipartFile; import javax.annotation.PostConstruct; import javax.servlet.ServletOutputStream; import javax.servlet.http.HttpServletResponse; -import java.io.*; +import java.io.BufferedInputStream; +import java.io.File; +import java.io.IOException; +import java.io.InputStream; import java.net.URLEncoder; import java.nio.file.Files; import java.nio.file.Path; @@ -121,9 +123,8 @@ public class LocalUpDownloader extends BaseUpDownloader { try { byte[] bytes = uploadFile.getBytes(); StringBuilder sb = new StringBuilder(256); - String s = MyCommonUtil.generateUuid() + "@" + responseInfo.getFilename(); - responseInfo.setFileRealName(responseInfo.getFilename()); - responseInfo.setFilename(s); + // fillUploadResponseInfo 已生成 {uuid}.{后缀},此处直接使用,不再二次加前缀(否则会出现 uuid@uuid.后缀)。 + String s = responseInfo.getFilename(); sb.append(uploadPath).append("/").append(s); Path path = Paths.get(sb.toString());