gpt4 book ai didi

java - Spring MVC 多文件上传与 HTML5 多文件表单功能

转载 作者:IT老高 更新时间:2023-10-28 13:57:49 25 4
gpt4 key购买 nike

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

这是我所做的和我的配置。

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>

Controller 方法:

@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

}

我的 session :

 <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 参数的数据在这里,但"file"参数未绑定(bind)。无论我尝试过哪种参数/字段名称/参数类型的组合,它都系统地为空。

HttpServletRequest 参数是一个 org.springframework.web.multipart.support.DefaultMultipartHttpServletRequest 并且它包含一个 multiPartFile 属性,该属性实际上包含文件数据。在调试中查看它的值(value)给了我

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

这意味着我的 files[] 确实在这里......但不知何故它没有正确通过数据绑定(bind)步骤......

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

我错过了什么吗?有没有人真正使这项工作正常进行?我能做些什么来填充这个 ArrayList (甚至是一个常规的 Array )?

我遇到了这个解决方案 Spring MVC with ajax file upload and MultipartFile这和我做的事情几乎一样,但显然我一定做错了,因为这个解决方案不适合我。

注意:我确实设法让它与单个文件上传一起工作。但我今天的挑战是一次获取多个文件。

任何帮助表示赞赏。

提前致谢。

最佳答案

虽然感谢 Alex,您已经得到了答案,但我还是想详细说明一下。使用 Spring 绑定(bind),表单字段被绑定(bind)到它们在 HTML 中的“名称”属性。由于不可能有一个表单字段 named files[](如果使用该语法声明一个变量名,它的名称是 files,但它是一个声明类型的数组),Spring 不能' t 匹配 - 在这种情况下的行为是忽略请求中的数据。

使用 MultipartFile 等类型,您可以使用名为“files”的列表或数组,如下例所示:

private List<MultipartFile> files;
private MultipartFile[] files;

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

关于java - Spring MVC 多文件上传与 HTML5 多文件表单功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14924809/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com