Kaynağa Gözat

【功能完善】【上传附件同时上传FTP服务器逻辑更改】

koul 2 hafta önce
ebeveyn
işleme
bc8a56f70d

+ 47 - 3
src/main/java/com/uas/eis/serviceImpl/MESDataServiceImpl.java

@@ -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();
+			}
+		}
+	}
+
 }