This commit is contained in:
2025-11-24 17:19:23 +08:00
parent 85953347db
commit 3b7371aca0

View File

@@ -44,6 +44,8 @@ import java.util.concurrent.RejectedExecutionException;
import java.util.concurrent.ThreadPoolExecutor;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.Semaphore;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
@@ -274,19 +276,35 @@ public class AnjuanAndJuanneiController {
// 获取所有文件,包括同名字段的多个文件
Map<String, MultipartFile> fileMap = multipartRequest.getFileMap();
logger.info("接收到文件数量: {}", fileMap.size());
logger.info("getFileMap() 接收到文件数量: {}", fileMap.size());
// 尝试获取名为 "file" 的多文件数组
List<MultipartFile> allFiles = new ArrayList<>();
try {
List<MultipartFile> files = multipartRequest.getFiles("file");
if (files != null && files.size() > 0) {
logger.info("getFiles('file') 接收到文件数量: {}", files.size());
allFiles.addAll(files);
} else {
// 回退到 getFileMap
allFiles.addAll(fileMap.values());
logger.info("回退到 getFileMap 方法,文件数量: {}", allFiles.size());
}
} catch (Exception e) {
logger.warn("获取文件数组失败,使用 getFileMap: {}", e.getMessage());
allFiles.addAll(fileMap.values());
}
logger.info("最终处理文件数量: {}", allFiles.size());
int fileIndex = 0;
for (Map.Entry<String, MultipartFile> entry : fileMap.entrySet()) {
for (MultipartFile file0 : allFiles) {
boolean acquired = false;
try {
uploadSemaphore.acquire(); // 最多并行处理3个文件
acquired = true;
fileIndex++;
String fieldName = entry.getKey();
MultipartFile file0 = entry.getValue();
logger.info("处理第{}个文件: 字段名={}, 文件名={}", fileIndex, fieldName, file0.getOriginalFilename());
logger.info("处理第{}个文件: 文件名={}, 大小={} bytes", fileIndex, file0.getOriginalFilename(), file0.getSize());
if (file0 == null || file0.isEmpty()) {
logger.warn("第{}个文件为空,跳过", fileIndex);