news 2026/4/18 8:55:17

【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/4/18 8:33:44

椭圆曲线中的Double-and-Add

这张图在讲一件事&#xff1a;椭圆曲线标量乘法 K⋅P&#xff08;也就是“用整数 K 去乘一个点 P”&#xff09;在实现里&#xff0c;最终会被拆成&#xff1a;上层的 点运算&#xff1a;EC-Double&#xff08;倍点&#xff0c;2Q&#xff09;和 EC-Add&#xff08;加点&#x…

作者头像 李华
网站建设 2026/4/18 6:25:14

【2025最新高维多目标优化】基于城市场景下无人机三维路径规划的导航变量的多目标粒子群优化算法NMOPSO研究附Matlab代码

✅作者简介&#xff1a;热爱科研的Matlab仿真开发者&#xff0c;擅长数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。&#x1f34e; 往期回顾关注个人主页&#xff1a;Matlab科研工作室&#x1f34a;个人信条&#xff1a;格物致知,完整Matlab代码及仿真咨询…

作者头像 李华
网站建设 2026/4/17 23:30:02

26、Linux 文本格式化与打印技术全解析

Linux 文本格式化与打印技术全解析 1. printf 的文本格式化应用 printf 主要用于脚本中对表格数据进行格式化,而非直接在命令行使用。不过,它也能解决多种格式化问题。 - 输出以制表符分隔的字段 : [me@linuxbox ~]$ printf "%s\t%s\t%s\n" str1 str2 str3 …

作者头像 李华