init
This commit is contained in:
@@ -44,6 +44,8 @@ import java.util.concurrent.RejectedExecutionException;
|
|||||||
import java.util.concurrent.ThreadPoolExecutor;
|
import java.util.concurrent.ThreadPoolExecutor;
|
||||||
import java.util.concurrent.TimeUnit;
|
import java.util.concurrent.TimeUnit;
|
||||||
import java.util.concurrent.Semaphore;
|
import java.util.concurrent.Semaphore;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.Arrays;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.Iterator;
|
import java.util.Iterator;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
@@ -274,19 +276,35 @@ public class AnjuanAndJuanneiController {
|
|||||||
|
|
||||||
// 获取所有文件,包括同名字段的多个文件
|
// 获取所有文件,包括同名字段的多个文件
|
||||||
Map<String, MultipartFile> fileMap = multipartRequest.getFileMap();
|
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;
|
int fileIndex = 0;
|
||||||
for (Map.Entry<String, MultipartFile> entry : fileMap.entrySet()) {
|
for (MultipartFile file0 : allFiles) {
|
||||||
boolean acquired = false;
|
boolean acquired = false;
|
||||||
try {
|
try {
|
||||||
uploadSemaphore.acquire(); // 最多并行处理3个文件
|
uploadSemaphore.acquire(); // 最多并行处理3个文件
|
||||||
acquired = true;
|
acquired = true;
|
||||||
fileIndex++;
|
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()) {
|
if (file0 == null || file0.isEmpty()) {
|
||||||
logger.warn("第{}个文件为空,跳过", fileIndex);
|
logger.warn("第{}个文件为空,跳过", fileIndex);
|
||||||
|
|||||||
Reference in New Issue
Block a user