news 2026/9/22 12:49:57

【SpringMVC】实现文件上传

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
【SpringMVC】实现文件上传

SpringMVC的入门案例,创建 MavenJavaWeb 工程,在 pom 文件中引入开发的jar包,具体的坐标如下

<properties> <spring.version>5.0.2.RELEASE</spring.version> </properties> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.13.1</version> <scope>test</scope> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-web</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>javax.servlet</groupId> <artifactId>servlet-api</artifactId> <version>2.5</version> <scope>provided</scope> </dependency> <dependency> <groupId>javax.servlet.jsp</groupId> <artifactId>jsp-api</artifactId> <version>2.0</version> <scope>provided</scope> </dependency> </dependencies>

额外导入文件上传的jar包

<dependency> <groupId>commons-fileupload</groupId> <artifactId>commons-fileupload</artifactId> <version>1.3.1</version> </dependency> <dependency> <groupId>commons-io</groupId> <artifactId>commons-io</artifactId> <version>2.4</version> </dependency>

前端内容

<h3>文件上传</h3> <form action="/fileupload.do" method="post" enctype="multipart/form-data"> 选择文件:<input type="file" name="upload" /><br/> <input type="submit" value="上传" /> </form>

springmvc.xml 中配置文件解析器对象
SpringMVC 提供的文件上传的工具类MultipartResolver以及设置上传文件的总大小

<!--配置文件上传的解析器组件--> <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"> <!--设置上传文件的总大小 8M = 8 * 1024 * 1024 --> <property name="maxUploadSize" value="8388608" /> </bean>

SpringMVC框架提供了MultipartFile对象,该对象表示上传的文件,要求变量名称必须和表单file标签的name属性名称相同

@Controller @RequestMapping("/upload") public class UploadController { /** * 文件上传 * MultipartFile upload 文件上传解析器对象解析request后,文件上传对象 * @return */ @RequestMapping("/fileupload.do") public String upload(MultipartFile upload, HttpServletRequest request) throws IOException { // 把文件上传到哪个位置 String realPath = request.getSession().getServletContext().getRealPath("/uploads"); // 打印文件夹路径 System.out.println("文件保存的根目录:" + realPath); // 创建该文件夹 File file = new File(realPath); // 判断该文件夹是否存在 if(!file.exists()){ // 创建文件夹 file.mkdirs(); } // 获取到上传文件的名称 String filename = upload.getOriginalFilename(); // 把文件的名称修改成为一的值 sdfs-csdf-fwer-sdfw String uuid = UUID.randomUUID().toString().replace("-", "").toUpperCase(); // 唯一的值 filename = uuid+"_"+filename; System.out.println("文件名称:"+filename); // 上传文件 upload.transferTo(new File(file,filename)); return "suc"; } }

实现了基于Spring框架的简单文件上传功能,首先在Spring配置中定义了id为multipartResolver的CommonsMultipartResolver组件,用于解析文件上传请求,并设置上传文件总大小限制为8M;前端则是一个提交路径为“/fileupload.do”、请求方式为post且编码类型为multipart/form-data(文件上传必需)的表单,包含文件选择框和上传按钮;后端UploadController类通过@RequestMapping(“/upload”)指定请求前缀,其内部的upload方法接收前端传来的MultipartFile文件对象和HttpServletRequest,先获取项目中“/uploads”目录的真实路径,判断该目录是否存在,不存在则创建,再用UUID生成唯一标识拼接原文件名以避免文件重名,最后调用transferTo方法将文件保存到“/uploads”目录,完成后返回“suc”视图。
上传结果:

打印结果:

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/22 20:16:13

pgconf_asia_2017_logical_replication_us_20171204-1

Logical Replication Internals Agenda What is Logical Replication?Let’s try!ArchitectureRestrictionsTrouble shooting What is Logical Replication? What is Logical Replication? Is PostgreSQL 10 new featuresReplicate per tableReplicate per transaction…

作者头像 李华
网站建设 2026/9/22 19:34:16

leetcode 762. 二进制表示中质数个计算置位

Problem: 762. 二进制表示中质数个计算置位 解题过程 log2计算二进制长度&#xff0c;然后统计1个数&#xff0c;查看集合是否是素数&#xff0c;计算是否是素数&#xff0c;若是则放入集合 Code class Solution { public:int countPrimeSetBits(int left, int right) {int le…

作者头像 李华
网站建设 2026/9/21 14:15:06

为啥yyyy-MM-dd HH:mm:ss的MM和HH设计为大写

yyyy-MM-dd HH:mm:ss 中的大写 MM 和 HH 是 Java 日期格式化中的约定&#xff0c;原因如下&#xff1a; 1. 区分不同的时间单位&#xff08;主要目的&#xff09; 月份 (Month) vs 分钟 (Minute) // 大写的 M 表示月份 (Month) // 小写的 m 表示分钟 (minute)SimpleDateForm…

作者头像 李华
网站建设 2026/9/22 6:23:49

基于java的SpringBoot/SSM+Vue+uniapp的身体健康管理系统的详细设计和实现(源码+lw+部署文档+讲解等)

文章目录前言详细视频演示具体实现截图技术栈后端框架SpringBoot前端框架Vue持久层框架MyBaitsPlus系统测试系统测试目的系统功能测试系统测试结论为什么选择我代码参考数据库参考源码获取前言 &#x1f31e;博主介绍&#xff1a;✌全网粉丝15W,CSDN特邀作者、211毕业、高级全…

作者头像 李华
网站建设 2026/9/22 0:14:18

走gateway接口偶现返回Internal Server Error

1.现象&#xff1a;业务反馈接口返回Internal Server Error经排查sringcloudgateway中有这个日志报错&#xff1a;18:49:40.317 [reactor-http-epoll-4] ERROR org.springframework.core.log.CompositeLog.error(CompositeLog.java:102) [traceId: ] - [009a73dc-74671082] 500…

作者头像 李华
网站建设 2026/9/23 8:40:10

35 岁以后的运维工程师该何去何从?出路究竟在何方?

运维工程师的出路在哪里&#xff0c;尤其是 35 岁以后&#xff1f; 最近在某乎看到个问题&#xff0c;“运维的出路在哪里&#xff0c;特别是35以后?”&#xff0c; 网友 1&#xff1a;孩子快跑 打好基础&#xff0c;网络&#xff0c;安全&#xff0c;数据库&#xff0c;服务…

作者头像 李华