下面就给您详细讲解“SpringMVC 单文件上传与多文件上传实例”的完整攻略。
下面就给您详细讲解“SpringMVC 单文件上传与多文件上传实例”的完整攻略。
一、SpringMVC 单文件上传实例
1.1 相关依赖说明
在 pom.xml 文件中增加以下依赖:
<dependency>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
<version>1.4</version>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-io</artifactId>
<version>1.3.2</version>
</dependency>
1.2 前端表单处理
前端页面需要增加一个文件上传 input,用于上传文件,示例如下:
<form method="post" action="/upload" enctype="multipart/form-data">
<input type="file" name="file" />
<input type="submit" value="上传" />
</form>
1.3 后端控制器处理
后端控制器中需要增加处理上传文件的方法,示例如下:
@RequestMapping(value = "/upload", method = RequestMethod.POST)
@ResponseBody
public String upload(HttpServletRequest request) throws Exception {
// 上传文件的存储路径
String uploadPath = request.getServletContext().getRealPath("/") + "upload";
// 创建上传文件的存储路径
File uploadDir = new File(uploadPath);
if (!uploadDir.exists()) {
uploadDir.mkdirs();
}
// 创建文件上传对象
DiskFileItemFactory factory = new DiskFileItemFactory();
factory.setSizeThreshold(4096);
factory.setRepository(uploadDir);
ServletFileUpload upload = new ServletFileUpload(factory);
// 获取上传的文件列表
List<FileItem> items = upload.parseRequest(request);
for (FileItem item : items) {
// 判断是否为上传文件类型
if (!item.isFormField()) {
String fileName = item.getName();
String filePath = uploadPath + File.separator + fileName;
File file = new File(filePath);
item.write(file);
}
}
return "文件上传成功!";
}
以上后端处理逻辑主要是通过调用 ServletFileUpload
实现了上传文件的处理,其各个参数含义可以参考 maven 依赖包中所带源码中的注释。
二、SpringMVC 多文件上传实例
2.1 相关依赖说明
在 pom.xml 文件中增加以下依赖:
<dependency>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
<version>1.4</version>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-io</artifactId>
<version>1.3.2</version>
</dependency>
2.2 前端表单处理
前端页面需要增加多个文件上传 input,用于上传多个文件,示例如下:
<form method="post" action="/uploadMulti" enctype="multipart/form-data">
<input type="file" name="file1" />
<input type="file" name="file2" />
<input type="file" name="file3" />
<input type="submit" value="上传" />
</form>
2.3 后端控制器处理
后端控制器中需要增加处理上传多个文件的方法,示例如下:
@RequestMapping(value = "/uploadMulti", method = RequestMethod.POST)
@ResponseBody
public String uploadMulti(HttpServletRequest request) throws Exception {
// 上传文件的存储路径
String uploadPath = request.getServletContext().getRealPath("/") + "upload";
// 创建上传文件的存储路径
File uploadDir = new File(uploadPath);
if (!uploadDir.exists()) {
uploadDir.mkdirs();
}
// 创建文件上传对象
DiskFileItemFactory factory = new DiskFileItemFactory();
factory.setSizeThreshold(4096);
factory.setRepository(uploadDir);
ServletFileUpload upload = new ServletFileUpload(factory);
// 获取上传的文件列表
List<FileItem> items = upload.parseRequest(request);
for (FileItem item : items) {
// 判断是否为上传文件类型
if (!item.isFormField()) {
String fileName = item.getName();
String filePath = uploadPath + File.separator + fileName;
File file = new File(filePath);
item.write(file);
}
}
return "文件上传成功!";
}
以上后端处理逻辑和单文件上传类似,只是在获取上传的文件列表时可以处理多个上传文件,如果希望获取到具体的上传文件名称,可以通过 FileItem
对象的 getFieldName()
方法获取到 input 控件的 name 属性值。
沃梦达教程
本文标题为:SpringMVC 单文件上传与多文件上传实例
基础教程推荐
猜你喜欢
- jpa使用注解生成表时无外键问题及解决 2023-01-24
- Spring Boot 的创建和运行示例代码详解 2023-03-15
- java实现多人聊天系统 2023-05-19
- JSP数据交互实现过程解析 2023-07-30
- Java利用Dijkstra算法求解拓扑关系最短路径 2023-03-07
- spring boot教程之建立第一个HelloWorld 2023-04-23
- Java删除String中空格的多种解决方法汇总 2023-01-23
- FilenameUtils.getName 函数源码分析 2023-06-01
- 学生选课管理系统(SQL+Java 附源码) 2023-11-03
- Spring Security密码解析器PasswordEncoder自定义登录逻辑 2023-03-22