文件上传
- Spring MVC 为文件上传提供了直接的支持,这种支持是通过即插即用的 MultipartResolver 实现的。
- Spring 用 Jakarta Commons FileUpload 技术实现了一个 MultipartResolver 实现类:CommonsMultipartResolver
- Spring MVC 上下文中默认没有装配 MultipartResovler,因此默认情况下不能处理文件的上传工作,如果想使用 Spring 的文件上传功能,需现在上下文中配置 MultipartResolver
- 配置 MultipartResolver
defaultEncoding: 必须和用户 JSP 的 pageEncoding 属性一致,以便正确解析表单的内
容,为了让 CommonsMultipartResolver 正确工作,必须先将 Jakarta Commons FileUpload 及 Jakarta Commons io 的类包添加到类路径下。
2 文件上传示例
- 拷贝jar包
commons-fileupload-1.2.1.jar commons-io-2.0.jar |
严重: Servlet /SpringMVC_06_FileUpload threw load() exception java.lang.ClassNotFoundException: org.apache.commons.fileupload.FileItemFactory |
- 配置文件上传解析器
<!– 配置文件上传解析器 id必须是”multipartResolver”,否则,会报错误: java.lang.IllegalArgumentException: Expected MultipartHttpServletRequest: is a MultipartResolver configured? –> <bean id=”multipartResolver” class=”org.springframework.web.multipart.commons.CommonsMultipartResolver“> <property name=”defaultEncoding” value=”UTF-8″></property> <property name=”maxUploadSize” value=”1024000″></property> </bean> |
- 上传页面
<%@ 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>Insert title here</title> </head> <body> <form action=”testUpload” method=”post” enctype=”multipart/form-data”> 文件: <input type=”file” name=”file”/><br><br> 描述: <input type=”text” name=”desc”/><br><br> <input type=”submit” value=”提交“/> </form> </body> </html> |
- 控制器方法
package com.atguigu.springmvc.crud.handlers; import java.io.IOException; import java.io.InputStream; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.multipart.MultipartFile; @Controller public class UploadHandler { @RequestMapping(value=”/testUpload”,method=RequestMethod.POST) public String testUpload(@RequestParam(value=”desc”,required=false) String desc, @RequestParam(“file”) MultipartFile multipartFile) throws IOException{ System.out.println(“desc : “+desc); System.out.println(“OriginalFilename : “+multipartFile.getOriginalFilename()); InputStream inputStream = multipartFile.getInputStream(); System.out.println(“inputStream.available() : “+inputStream.available()); System.out.println(“inputStream : “+inputStream); return “success”; //增加成功页面: /views/success.jsp } } |
3 思考多个文件上传?
想要了解跟多关于java培训课程内容欢迎关注尚硅谷java培训,尚硅谷除了这些技术文章外还有免费的高质量java培训课程视频供广大学员下载学习。