Sweetdream 2017-08-20
前言:本篇主要介绍SpringMVC如何处理文件上传,用法超级简单,开发效率高。
Spring MVC为文件上传提供了直接的支持,这种支持是通过即插即用的 MultipartResolver 实现的。Spring用Jakarta Commons FileUpload 技术实现了一个MultipartResolver 实现类:CommonsMultipartResovler。
Spring MVC 上下文中默认没有装配 MultipartResovler,因此默认情况下不能处理文件的上传工作,如果想使用 Spring 的文件上传功能,需现在上下文中配置 MultipartResolver。
1. 加入相关jar包
2. 配置SpringMVC配置文件
<!-- 配置 MultipartResolver --> <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"> <property name="defaultEncoding" value="UTF-8"></property> <property name="maxUploadSize" value="1024000"></property> </bean>
注意:defaultEncoding: 必须和用户 JSP 的 pageEncoding 属性一致,以便正确解析表单的内容;
3. 前台代码
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>测试文件上传</title> </head> <body> <form action="testFileUpload.action" method="POST" enctype="multipart/form-data"> File: <input type="file" name="file"/> Desc: <input type="text" name="desc"/> <input type="submit" value="Submit"/> </form> </body> </html>
注意:编码方式为UTF-8,与SpringMVC配置文件中保持一致;
4. 后台代码
@RequestMapping("/testFileUpload.action") public String testFileUpload(@RequestParam("desc") String desc, @RequestParam("file") MultipartFile file) throws IOException{ String tomcatPath = System.getProperty("catalina.home"); File destFile = new File(tomcatPath + File.separator + "temp" + File.separator + file.getOriginalFilename()); file.transferTo(destFile); System.out.println("desc: " + desc); System.out.println("OriginalFilename: " + file.getOriginalFilename()); return "success"; }