SpringMVC上传文件
文件上传的要求
1 2 3 | A、form表单的enctype取值必须是:multipart/form-data B、method属性取值必须是Post C、提供一个文件选择域 <input type= "file" /> |
springmvc上传文件示例
这里只是演示,上传的文件和访问的应用在同一台服务器上。
pom添加依赖
1 2 3 4 5 6 7 8 9 10 11 12 | <!--文件上传的依赖--> <dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-io</artifactId> <version>1.3.2</version> </dependency> <dependency> <groupId>commons-fileupload</groupId> <artifactId>commons-fileupload</artifactId> <version>1.3.1</version> </dependency> |
创建保存文件的目录
在webapp下创建目录upload,上传的文件放到这个目录下
jsp页面
在webapp下创建upload.jsp
1 2 3 4 5 6 7 8 9 10 11 12 13 | <%@ page contentType= "text/html;charset=UTF-8" language= "java" %> <html> <head> <title>Title</title> </head> <body> <h1>文件上传</h1> <form action= "/testFileUpload" method= "post" enctype= "multipart/form-data" > 文件:<input type= "file" name= "uploadFile" /><br/> <input type= "submit" value= "上传" /> </form> </body> </html> |
web.xml中修改欢迎页
1 2 3 | <welcome-file-list> <welcome-file>upload.jsp</welcome-file> </welcome-file-list> |
控制器
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 | package com.qzcsbj.controller; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.multipart.MultipartFile; import javax.servlet.http.HttpServletRequest; import java.io.File; import java.text.SimpleDateFormat; import java.util.Date; import java.util.UUID; @Controller public class TestUploadController { @RequestMapping( "/testFileUpload" ) public String testFileUpload(MultipartFile uploadFile, HttpServletRequest request) throws Exception { String fileName = "" ; // 获取原始文件名字 String uploadFileName = uploadFile.getOriginalFilename(); // 把文件加上随机数,防止文件重复 String uuid = UUID.randomUUID().toString().replace( "-" , "" ).toUpperCase(); fileName = uuid + "_" + uploadFileName; System. out .println( "要上传的文件的名称是:" + fileName); // 获取上传的路径 String basePath = request.getServletContext().getRealPath( "/upload" ); System. out .println( "basePath:" + basePath); // 每天一个文件夹 String datePath = new SimpleDateFormat( "yyyy-MM-dd" ).format( new Date()); // 判断路径是否存在 File file = new File(basePath + "/" + datePath); if (!file.exists()) { file.mkdirs(); } // 把上传的文件写到指定位置 File f = new File(file, fileName); uploadFile.transferTo(f); System. out .println( "文件上传成功,路径为:" +f.getAbsolutePath()); return "success" ; } } |
配置文件解析器
springmvc.xml中添加:
1 2 3 4 5 6 | <bean id= "multipartResolver" class = "org.springframework.web.multipart.commons.CommonsMultipartResolver" > <!-- 设置上传文件的最大尺寸为 5MB --> <property name= "maxUploadSize" > <value>5242880</value> </property> </bean> |
测试
启动tomcat,选择要上传的文件,点击“上传”
日志
上传成功
访问图片:http://localhost:8080/upload/2023-01-18/47CE4F91ADD84030B77E223FB07951AE_fu.jpg
原文会持续更新,原文地址:https://www.cnblogs.com/uncleyong/p/17058667.html
__EOF__

本文作者:持之以恒(韧)
关于博主:擅长性能、全链路、自动化、企业级自动化持续集成(DevTestOps)、测开等
面试必备:项目实战(性能、自动化)、简历笔试,https://www.cnblogs.com/uncleyong/p/15777706.html
测试提升:从测试小白到高级测试修炼之路,https://www.cnblogs.com/uncleyong/p/10530261.html
欢迎分享:如果您觉得文章对您有帮助,欢迎转载、分享,也可以点击文章右下角【推荐】一下!
关于博主:擅长性能、全链路、自动化、企业级自动化持续集成(DevTestOps)、测开等
面试必备:项目实战(性能、自动化)、简历笔试,https://www.cnblogs.com/uncleyong/p/15777706.html
测试提升:从测试小白到高级测试修炼之路,https://www.cnblogs.com/uncleyong/p/10530261.html
欢迎分享:如果您觉得文章对您有帮助,欢迎转载、分享,也可以点击文章右下角【推荐】一下!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通