我正在尝试使用@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解决方案,它做了和我差不多的事情,但显然我肯定做错了什么,因为这个解决方案对我不起作用。
注意:我确实设法让它与单个文件上传一起工作。但我今天的挑战是一次获取多个文件。
感谢任何帮助。
提前感谢。
是否包含通用文件上载依赖项?
<dependency>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
<version>1.3</version>
</dependency>
我测试了fileupload即使在控制器处理程序上使用ArrayList作为参数类型也能正常工作
感谢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/.我不想使用这个插件,因为它与学习和结果一样重要