SpringMVC处理上传文件
Spring MVC处理文件上传
Spring MVC为文件上传提供了直接支持,这种支持是通过即插即用的MultipartResolver实现. Spring使用Jakarta Commons FileUpload技术实现了一个MultipartResolver实现类:CommonsMultipartResolver。
在SpringMVC上下文中默认没有装配MultipartResolver,因此默认情况下不能处理文件上传工作。如果想使用Spring的文件上传功能,则需要先在上下文中配置MultipartResolver。
- 引入jar包!
1 2 3 | commons-fileupload.jar commons-io.jar |
maven项目pom.xml
-
1234567891011121314
<!-- https:
//mvnrepository.com/artifact/commons-fileupload/commons-fileupload -->
<dependency>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
<version>
1.3
.
1
</version>
</dependency>
<!-- https:
//mvnrepository.com/artifact/commons-io/commons-io -->
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>
2.4
</version>
</dependency>
配置MultipartResolver
配置
1 2 3 4 5 6 7 | <!--multipartResolver配置 id必须为multipartResolver--> <bean id= "multipartResolver" class = "org.springframework.web.multipart.commons.CommonsMultipartResolver" p:defaultEncoding= "UTF-8" p:maxUploadSize= "5242880" p:uploadTempDir= "file:/d:/file/temp" /> |
- 编写控制器和文件上传表单
编写文件上传表单 upload.jsp
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | <%@ page contentType= "text/html;charset=UTF-8" language= "java" %> <html> <head> <title>Title</title> </head> <body> <center> <form method= "post" enctype= "multipart/form-data" action= "user/upload" > 上传图片: <input type= "file" name= "file" /> <button>提交</button> </form> </center> </body> </html> |
编写控制器代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | 1 . @RequestMapping ( "/toUpload" ) public String toUpload(){ //跳转到上传页面 return "user/upload" ; } @RequestMapping ( "/upload" ) public String saveFile( @RequestParam ( "file" )MultipartFile file) throws IOException { //接收表单提交的数据,包含文件 System.out.println( "name = " + name); // baseurl=D:\workspace_idea1\TestSSM\target\TestSSM\upload\ String basePath=request.getSession().getServletContext().getRealPath( "/upload/" ); System.out.println(basePath); try { file.transferTo( new File(basePath+file.getOriginalFilename())); } catch (IOException e) { e.printStackTrace(); } return "success" ; } |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!