Spring MVC多文件上传具有HTML5多文件格式function

我正在尝试使用带有@Controller和@RequestMapping的spring 3.1.2上传多个文件。

这是我做的和我的配置。

Html5表格:

控制器方法:

 @RequestMapping(value="/publisher/addFileSystemImage.foo", method=RequestMethod.POST) public @ResponseBody List addFileSystemImage(@RequestParam("files[]") ArrayList files, String locId, HttpServletRequest request) { //do lotsa voodoo rocket science here to process the files } 

我的conf:

     

提交表单确实可以访问addFileSystemImage方法。 locId参数的数据在此处,但“files”参数未绑定。 无论我尝试过哪种参数/字段名称/参数类型,它都是系统无效的。

HttpServletRequest参数是org.springframework.web.multipart.support.DefaultMultipartHttpServletRequest,它包含一个实际保存文件数据的multiPartFile属性。 看看它在调试中的价值给了我

 {files[]=[org.springframework.web.multipart.commons.CommonsMultipartFile@16afd7f9, org.springframework.web.multipart.commons.CommonsMultipartFile@728c2811, org.springframework.web.multipart.commons.CommonsMultipartFile@4f9aaed7]} 

这意味着我的文件[]确实在这里……但不知怎的,它没有正确地传递数据绑定步骤…

现在……我知道你会告诉我我可以从请求中检索数据……但我宁愿让这个工作正常… Sring方式…… :)并且我的MultipartFile的ArrayList正确填充。

我错过了什么吗? 有人真的让这项工作正常吗? 如何填充此ArrayList(甚至是常规数组)?

我遇到了这个解决方案Spring MVC带有ajax文件上传和MultipartFile ,它和我做的几乎完全相同 ,但很明显我一定做错了,因为这个解决方案对我不起作用。

注意:我确实设法使用单个文件上传。 但我今天的挑战是一次获得多个文件。

任何帮助赞赏。

提前致谢。

虽然你已经得到了Alex的回答,但我想详细说明一下。 使用Spring绑定,表单字段绑定到HTML中的“名称”属性。 因为不可能有一个名为 files []的表单字段(如果一个声明一个带有该语法的变量名,它的名字是文件,但它是一个声明类型的数组),Spring无法匹配它 – 和在这种情况下的行为是忽略请求中的数据。

使用诸如MultipartFile之类的类型,您可以使用名为“files”的List或数组作为以下示例:

 private List files; private MultipartFile[] files; 

使用适当的getter和setter,您可以相应地访问和更改文件列表。

是否包含了commons-fileupload依赖?

  commons-fileupload commons-fileupload 1.3  

我测试了fileupload工作正常,即使ArrayList作为控制器处理程序上的参数类型