【发布时间】:2015-11-03 22:16:27
【问题描述】:
我正在尝试使用 FormData 和 spring 上传多个文件。
HTML:
<input type="file" name="img" multiple id="upload-files">
JS代码:
var ajaxData = new FormData();
var files = $('#upload-files').prop('files');
for(var i=0;i<files.length;i++){
ajaxData.append('file['+i+']', files[i]);
}
ajaxData.append("file", files);
$http.post('../rest/upload', ajaxData, {
headers: {'Content-Type': undefined },
transformRequest: angular.identity
});
弹簧控制器代码:
@RequestMapping(value = "/upload", produces="application/json", method = RequestMethod.POST)
@ResponseBody
public String upload(
@RequestParam ArrayList<MultipartFile> files
){
System.out.println(files.size());
return null;
}
但是,在提交包含多个文件的请求时,文件数显示为 0。在使用数组表示法 MultipartFile[] files 而不是 ArrayList 时,它会给出 400,错误请求。
如何让 spring 控制器处理多个文件?我无法找到其他 SO 问题的解决方案。
【问题讨论】:
-
您是否尝试将 List
重新定位到一个对象并在 spring-servlet.xml 上配置了 CommonsMultipartResolver 和 InternalResourceViewResolver? -
您是否在表单提交按钮中正确添加了 encType?例如
标签: java jquery ajax spring spring-mvc