我想上传使用弹簧3.1.2 @Controller和@RequestMapping多个文件。
这就是我所做的和我的配置。
HTML5的形式:
<form action="addFileSystemImage.foo" method="post" enctype="multipart/form-data">
<input class='fileInput' type="file" name="files[]" multiple="multiple" />
<input type="text" value="13asdf12eadsf" name="locId"/>
<input type="submit" />
</form>
控制方法:
@RequestMapping(value="/publisher/addFileSystemImage.foo", method=RequestMethod.POST)
public @ResponseBody List<UploadedFile> addFileSystemImage(@RequestParam("files[]") ArrayList<MultipartFile> files, String locId, HttpServletRequest request) {
//do lotsa voodoo rocket science here to process the files
}
我的conf:
<mvc:annotation-driven />
<context:component-scan base-package="foo.package"></context:component-scan>
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"></bean>
提交表单并得到了addFileSystemImage方法。 对于LOCID观点的数据是在这里,但“文件”的说法未绑定。 这是系统地空不管我已经试过什么参数/字段名称/参数类型的组合。
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因为我但显然我必须做一些错误的,因为该解决方案是不工作对我来说这确实几乎同样的事情。
注:我还是设法得到它与单文件上传工作。 但今天我的挑战是同时获得多个文件。
任何帮助表示赞赏。
提前致谢。