|
|
@@ -21,6 +21,8 @@ import org.apache.commons.net.ftp.FTPClient;
|
|
|
|
|
|
import java.io.File;
|
|
|
import java.io.IOException;
|
|
|
+import java.nio.file.Files;
|
|
|
+import java.nio.file.StandardCopyOption;
|
|
|
import java.sql.Timestamp;
|
|
|
import java.util.*;
|
|
|
|
|
|
@@ -552,10 +554,11 @@ public class MESDataServiceImpl implements MESDataService {
|
|
|
|
|
|
private File convertMultiPartFileToFile(MultipartFile multipartFile) throws IOException {
|
|
|
// 使用系统临时目录,并生成唯一文件名
|
|
|
- String fileName = multipartFile.getOriginalFilename();
|
|
|
+ //String fileName = multipartFile.getOriginalFilename();
|
|
|
// 为了防止文件名冲突,可以添加随机前缀或使用UUID
|
|
|
- String prefix = UUID.randomUUID().toString();
|
|
|
- File file = File.createTempFile(prefix, getFileExtension(fileName));
|
|
|
+ //String prefix = UUID.randomUUID().toString();
|
|
|
+ //File file = File.createTempFile(prefix, getFileExtension(fileName));
|
|
|
+ File file = createTempFileWithOriginalName(multipartFile);
|
|
|
multipartFile.transferTo(file);
|
|
|
return file;
|
|
|
}
|
|
|
@@ -571,4 +574,45 @@ public class MESDataServiceImpl implements MESDataService {
|
|
|
return fileName.substring(lastIndex);
|
|
|
}
|
|
|
|
|
|
+ public File createTempFileWithOriginalName(MultipartFile multipartFile) throws IOException {
|
|
|
+ if (multipartFile == null || multipartFile.isEmpty()) {
|
|
|
+ throw new IllegalArgumentException("文件为空");
|
|
|
+ }
|
|
|
+
|
|
|
+ // 获取原始文件名
|
|
|
+ String originalFilename = multipartFile.getOriginalFilename();
|
|
|
+ if (originalFilename == null) {
|
|
|
+ throw new IllegalArgumentException("文件名无效");
|
|
|
+ }
|
|
|
+
|
|
|
+ // 创建临时文件
|
|
|
+ File tempFile = File.createTempFile("temp_", null);
|
|
|
+
|
|
|
+ try {
|
|
|
+ // 将MultipartFile内容写入临时文件
|
|
|
+ multipartFile.transferTo(tempFile);
|
|
|
+
|
|
|
+ // 创建目标目录(使用系统临时目录的子目录)
|
|
|
+ File targetDir = new File(System.getProperty("java.io.tmpdir"), "uploads");
|
|
|
+ if (!targetDir.exists()) {
|
|
|
+ targetDir.mkdirs();
|
|
|
+ }
|
|
|
+
|
|
|
+ // 构建目标文件路径(保持原文件名)
|
|
|
+ File targetFile = new File(targetDir, originalFilename);
|
|
|
+
|
|
|
+ // 复制临时文件到目标文件
|
|
|
+ Files.copy(tempFile.toPath(), targetFile.toPath(),
|
|
|
+ StandardCopyOption.REPLACE_EXISTING);
|
|
|
+
|
|
|
+ return targetFile;
|
|
|
+
|
|
|
+ } finally {
|
|
|
+ // 删除临时文件
|
|
|
+ if (tempFile.exists()) {
|
|
|
+ tempFile.delete();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
}
|