Browse Source

refactor(upload): 统一文件存储命名策略为 {uuid}.{后缀}

- 存储文件名由 {uuid}.{原始文件名} 改为 {uuid}.{扩展名},避免同名文件互相覆盖
- 新增 fileRealName 字段保存原始文件名,filename 字段统一存储实际存储名
- 移除 LocalUpDownloader 中二次添加 uuid 前缀的逻辑,避免产生 uuid@uuid.后缀 格式
- 清理未使用的 MyCommonUtil 导入,将通配符导入替换为具体类导入
main-stable
chenchuchuan 10 hours ago
parent
commit
91791451cf
  1. 11
      common/common-core/src/main/java/apelet/common/core/upload/BaseUpDownloader.java
  2. 11
      common/common-core/src/main/java/apelet/common/core/upload/LocalUpDownloader.java

11
common/common-core/src/main/java/apelet/common/core/upload/BaseUpDownloader.java

@ -80,11 +80,16 @@ public abstract class BaseUpDownloader { @@ -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());
}
/**

11
common/common-core/src/main/java/apelet/common/core/upload/LocalUpDownloader.java

@ -2,7 +2,6 @@ package apelet.common.core.upload; @@ -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; @@ -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 { @@ -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());

Loading…
Cancel
Save