使用SpringMVC进行文件上传
2020/3/5 17:02:04
本文主要是介绍使用SpringMVC进行文件上传,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
文件上传是表现层常见的需求,在Spring MVC
中底层使用Apache的Commons FileUpload
工具来完成文件上传,对其进行封装,让开发者使用起来更加方便。接下来看看如何开发?
1 导入common-fileupload包
<!-- commons-fileUpload --> <dependency> <groupId>commons-fileupload</groupId> <artifactId>commons-fileupload</artifactId> <version>1.3.1</version> </dependency>复制代码
2 配置文件解析器
<!-- 配置文件上传解析器 注意:必须配置id,且名称必须为multipartResolver --> <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"> <!-- 配置限制文件上传大小 (字节为单位)--> <property name="maxUploadSize" value="1024000"/> </bean>复制代码
注意几个点:
- 必须配置
CommonsMultipartResolver
解析器 - 该解析器的id必须叫
multipartResolver
,否则无法成功接收文件 - 可以通过
maxUploadSize
属性限制文件上传大小
3 设计文件上传表单
<%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>一点教程网-文件上传</title> </head> <body> <h3>SpringMVC方式文件上传</h3> <form action="/upload" method="post" enctype="multipart/form-data"> 选择文件:<input type="file" name="imgFile"> <br/> 文件描述:<input type="text" name="memo"> <br/> <input type="submit" value="上传"> </form> </body> </html>复制代码
上传表单注意以下几点:
表单的enctype必须改为multipart/form-data
表单提交方式必须为POST
,不能是GET
4 编写控制器接收文件及参数
package com.yiidian.controller; import com.yiidian.domain.User; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.ui.ModelMap; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.multipart.MultipartFile; import javax.servlet.http.HttpServletRequest; import java.io.File; import java.io.IOException; import java.util.UUID; /** * 演示Spring MVC文件上传 * 一点教程网 - www.yiidian.com */ @Controller public class UploadController { /** * 接收文件 */ @RequestMapping("/upload") public String upload(HttpServletRequest request, MultipartFile imgFile,String memo){ //1.获取网站的upload目录的路径: ServletContext对象 String upload = request.getSession().getServletContext().getRealPath("/upload"); //判断该目录是否存在,不存在,自己创建 File uploadFile = new File(upload); if(!uploadFile.exists()){ uploadFile.mkdir(); } //把文件保存到upload目录 //2.生成随机文件名称 //2.1 原来的文件名 String oldName = imgFile.getOriginalFilename(); //2.2 随机生成文件名 String uuid = UUID.randomUUID().toString(); //2.3 获取文件后缀 String extName = oldName.substring(oldName.lastIndexOf(".")); //.jpg //2.4 最终的文件名 String fileName = uuid+extName; //3.保存 try { imgFile.transferTo(new File(upload+"/"+fileName)); } catch (IOException e) { e.printStackTrace(); } System.out.println("文件描述:"+memo); return "success"; } }复制代码
注意:这里使用MultipartFile
对象接收文件,并把文件存放在项目的upload目录下,同时还接收了普通参数。
5 运行测试
检查项目的target目录,是否有文件
控制台输出参数内容:
源码下载:https://pan.baidu.com/s/1mtuGCnLaoq0IEemviwMg
欢迎关注我的公众号::一点教程。获得独家整理的学习资源和日常干货推送。
如果您对我的系列教程感兴趣,也可以关注我的网站:yiidian.com
这篇关于使用SpringMVC进行文件上传的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-10-01基于Python+Vue开发的医院门诊预约挂号系统
- 2024-10-01基于Python+Vue开发的旅游景区管理系统
- 2024-10-01RestfulAPI入门指南:打造简单易懂的API接口
- 2024-10-01初学者指南:了解和使用Server Action
- 2024-10-01Server Component入门指南:搭建与配置详解
- 2024-10-01React 中使用 useRequest 实现数据请求
- 2024-10-01使用 golang 将ETH账户的资产平均分散到其他账户
- 2024-10-01JWT用户校验课程:从入门到实践
- 2024-10-01Server Component课程入门指南
- 2024-09-30Dnd-Kit学习:新手快速入门指南