项目中需要用到文件的批量上传,为了快速完成,找到了 goouploader 插件,但是看了好多人在控制层处理文件上传时,都是将 HttpServletRequest 请求转换为 MultipartHttpServletRequest,然后进行处理。我觉得没有必要这么做,既然使用了 SpringMVC 框架,那就应该使用框架带来的便利之处。下面我把我实现的步骤写出来(欢迎提意见):
1、加入 springMVC 文件上传的 jar 包(springMVC 文件上传底层依然借助于 commons-fileupload)
commons-fileupload-1.3.1.jar
commons-io-2.4.jar
2、在 springmvc.xml 配置文件中配置 CommonsMultipartResolver
<!-- 文件上传: 配置 CommonsMultipartResolver -->
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<property name="defaultEncoding" value="UTF-8"></property>
</bean>
3、编写处理文件上传的方法
/**
*
* @param Filedata:
* GooUploader 插件file_post_name 属性的默认值,虽然可以设置,但是文档中提到,设置属性在 Linux 环境下失效,且官方建议使用默认的属性值
*
* 注意:GooUploader 底层用一个列表,记录每一个待传文件的信息,在上传过程中,每上传一个文件就向服务器发一次请求,即按顺序单个上传
* 所以服务器端每次接收到的上传文件对象只有1个,故不需要数组类型的参数进行接收
*/
@RequestMapping("/upload")
public void upload(@RequestParam("Filedata") MultipartFile Filedata) throws Exception{
//获取上传文件的原始文件名
String originalFilename = Filedata.getOriginalFilename();
//设置上传的目录和文件名
File file = new File("d:/temp/", originalFilename);
//文件上传
Filedata.transferTo(file);
System.out.println("文件上传成功!");
}