当前位置: 首页 > 知识库问答 >
问题:

SpringMVC多文件上传与HTML5多文件格式功能

徐柏
2023-03-14

我正在尝试使用@Controller和@Request estMap使用Spring 3.1.2上传多个文件。

下面是我做的和我的配置。

格式 :

<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  

}

我的会议:

 <mvc:annotation-driven />
 <context:component-scan base-package="foo.package"></context:component-scan>
 <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"></bean>

提交表单确实会转到添加文件系统映像方法。locId 参数的数据位于此处,但“文件”参数未绑定。无论我尝试过什么参数/字段名称/参数类型的组合,它都是系统性的空值。

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

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

这意味着我的文件[]确实在这里…但不知何故它没有正确通过数据绑定步骤。。。

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

我错过了什么吗?有没有人真正正确地完成了这项工作?我该怎么做才能填充这个数组列表(甚至是常规数组)?

我偶然发现了这个带有ajax文件上传和MultipartFile的Spring MVC解决方案,它做了和我差不多的事情,但显然我肯定做错了什么,因为这个解决方案对我不起作用。

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

感谢任何帮助。

提前感谢。

共有2个答案

濮阳奇逸
2023-03-14

是否包含通用文件上载依赖项?

<dependency>
  <groupId>commons-fileupload</groupId>
  <artifactId>commons-fileupload</artifactId>
  <version>1.3</version>
</dependency>

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

步博涉
2023-03-14

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

使用多部分文件等类型,可以使用名为“文件”的列表或数组,如以下示例所示:

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

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

 类似资料:
  • 问题内容: 我遇到了这个简单的js ajax上传代码(由于某种原因,jquery 似乎不适用于HTML5), 但是我这里有两个问题, 这条线在物体之后是什么意思? 为什么在那里需要ID?我能做些什么使用jQuery 用? 此ajax仅用于单个文件上传,如何更改多个文件上传? 问题答案: 这行在对象FormData之后是什么意思? 在得到由它的ID元件。该抓住从元件中的第一选择的文件。将其追加到与字

  • 本文向大家介绍java 文件上传(单文件与多文件),包括了java 文件上传(单文件与多文件)的使用技巧和注意事项,需要的朋友参考一下 java 文件上传(单文件与多文件) 一、简述 一个javaWeb项目中,文件上传功能几乎是必不可少的,本人在项目开发中也时常会遇到,以前也没怎么去理它,今天有空学习了一下这方面的知识,于是便将本人学到的SpringMVC中单文件与多文件上传这部分知识做下笔记。

  • 本文向大家介绍C#实现文件上传以及多文件上传功能,包括了C#实现文件上传以及多文件上传功能的使用技巧和注意事项,需要的朋友参考一下 一、前端搭建 1、前端用到js:uploadify(下载地址:http://www.uploadify.com/download/)、layer (下载地址:http://layer.layui.com/),下载之后把它们放在你的项目里 列如 2、根据你的需要在你项目

  • egg 多文件上传 >[danger] 如果要获取同时上传的多个文件,不能通过ctx.getFileStream()来获取 > 需要通过 ctx.multipart({ autoFields:true }) 获取 > autoFields: true 表示获取除了文件字段以外的其他信息字段 用户可以通过在config/config.default.js中配置来新增支持的文件扩展名,或者重写整个白名

  • 本文向大家介绍WebUploader+SpringMVC实现文件上传功能,包括了WebUploader+SpringMVC实现文件上传功能的使用技巧和注意事项,需要的朋友参考一下 WebUploader是由Baidu团队开发的一个简单的以HTML5为主,FLASH为辅的现代文件上传组件。在现代的浏览器里面能充分发挥html5的优势,同时又不摒弃主流IE浏览器,沿用原来的FLASH运行时,兼容IE6

  • 我有一个多文件上传表单: 我用ajax发布这些文件。我想一个接一个地上传选定的文件(为了创建单独的进度条,出于好奇)。 我可以通过以下方式获得文件列表或单个文件: 耶林 但是FileList是不可变的,我不知道如何提交单个文件。 我认为这是可能的,正如我所看到的http://blueimp.github.com/jQuery-File-Upload/.我不想使用这个插件,因为它与学习和结果一样重要