一、加入依赖
commons-io-2.0.jar
commons-fileupload-1.2.1.jar
二、接口MultipartResolver
- Spring MVC 为文件上传提供了直接的支持,这种支持是通过即插即用的 MultipartResolver 实现的。Spring 用Jakarta Commons FileUpload 技术实现了一个MultipartResolver 实现类:CommonsMultipartResovler
- Spring MVC 上下文中默认没有装配 MultipartResovler,因此默认情况下不能处理文件的上传工作,如果想使用 Spring的文件上传功能,需现在上下文中配置MultipartResolver
三、配置 MultipartResolver
defaultEncoding: 必须和用户 JSP 的 pageEncoding 属性一致,以便正确解析表单的内容
<!--配置MultipartResolver 文件上传--> <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"> <property name="defaultEncoding" value="UTF-8"></property> <property name="maxUploadSize" value="5242880"></property> </bean>
注意:id的值必须是mutipartResolver。
四、文件上传表单
<form action="${pageContext.request.contextPath}/test/testFileUpload" enctype="multipart/form-data" method="post"> <input type="file" name="file"> <input type="submit" value="上传"> </form>
五、Cotroller请求映射
/** * 测试文件下载 * @param multipartFile * @return */ @RequestMapping("/testFileUpload") public String testFileUpload(@RequestParam("file")MultipartFile multipartFile, Map<String,Object> map) throws IOException { //文件的原始名 String originalFileName = multipartFile.getOriginalFilename(); //文件的大小 Long size = multipartFile.getSize(); //form表单的name值 String name = multipartFile.getName(); if(multipartFile!=null){ //将文件复制到目标目录 multipartFile.transferTo(new File("D://upload//"+originalFileName)); } map.put("originalFileName",originalFileName); map.put("size",size); map.put("name",name); return SUCCESS; }