我正在尝试为上传文件制作一些复杂的表单, 由于它是不同的文件大小,我分开类型的数量,形式如下: multiple and single file upload
我已成功上传具有不同名称的多个文件
<form name="uploadForm" method="post" enctype="multipart/form-data" action="file.spring?action=upload">
<input type="file" name="upFile[0]">
<input type="file" name="upFile[1]">
<input type="file" name="upFile[2]">
</form>
但是对于以下形式
<form name="uploadForm" method="post" enctype="multipart/form-data" action="file.spring?action=upload">
<input type="file" name="upFile">
<input type="file" name="upFile">
<input type="file" name="upFile">
</form>
上传的唯一文件是第一个,
在插入之前,我按如下方式准备Util类以获取fileList,
public static List<Map<String, MultipartFile>> getFilesFromRequest(HttpServletRequest request){
List<Map<String, MultipartFile>> fileList = new ArrayList<Map<String,MultipartFile>>();
MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
Iterator<String> it = multipartRequest.getFileNames();
while(it.hasNext()){
String key = it.next();
if(!multipartRequest.getFile(key).isEmpty()){
Map<String, MultipartFile> file = new HashMap<String, MultipartFile>();
file.put(key, multipartRequest.getFile(key));
fileList.add(file);
}
}
return fileList;
}
有什么我想念的吗?
更新:
我通过将MultipartHttpServletRequest更改为DefaultMultipartHttpServletRequest来找到解决方案
感谢@Bart,可以找到答案in this post
答案 0 :(得分:1)
您对所有文件使用相同的名称(upfile)
<form name="uploadForm" method="post" enctype="multipart/form-data" action="file.spring?action=upload">
<input type="file" name="upFile">
<input type="file" name="upFile">
<input type="file" name="upFile">
</form>
并且在您的Util中,您尝试按名称迭代文件
Iterator<String> it = multipartRequest.getFileNames();
所以你只会得到一个