下面就给您详细讲解“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 单文件上传与多文件上传实例 - Python技术站