SpringMVC多文件上传实现
1、加载pom依赖
<!-- https://mvnrepository.com/artifact/commons-fileupload/commons-fileupload -->
<dependency>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
<version>1.4</version>
</dependency>
2、配置bean,此处id="multipartResolver"一定要正确。
<bean class="org.springframework.web.multipart.commons.CommonsMultipartResolver" id="multipartResolver">
<property name="defaultEncoding" value="UTF-8"></property>
<property name="maxUploadSize" value="#{1024*1024*100}"></property>
</bean>
3、配置控制器
@RequestMapping("upload")
public String upload01(String desc, MultipartFile file01, HttpServletRequest req, Model model) throws IOException {
System.out.println(desc);
System.out.println(file01.getOriginalFilename());
String fileName = "D:\up\"+file01.getOriginalFilename();
System.out.println(fileName);
File file = new File(fileName);
file01.transferTo(file);
model.addAttribute("filename",file01.getOriginalFilename());
//
return "success";
}
/***
* 多文件上传
* **/
@RequestMapping("uploads")
public String upload01(String desc,MultipartFile[] file01,HttpServletRequest req) throws InterruptedException {
for(MultipartFile f:file01){
System.out.println(desc);
System.out.println(f.getOriginalFilename());
String fileName = "D:\up\" + f.getOriginalFilename();
System.out.println(fileName);
File file = new File(fileName);
try {
f.transferTo(file);
} catch (IOException e) {
throw new RuntimeException(e);
}
//
}
return "success";
}
/*
* 多线上传
* */
@RequestMapping("uploads01")
public String uploads01(String desc,MultipartFile[] file01,HttpServletRequest req) throws InterruptedException {
for(MultipartFile f:file01){
Thread thread = new Thread(new Runnable() {
@Override
public void run() {
System.out.println(desc);
System.out.println(f.getOriginalFilename());
String fileName = "D:\up\" + f.getOriginalFilename();
System.out.println(fileName);
File file = new File(fileName);
try {
f.transferTo(file);
} catch (IOException e) {
throw new RuntimeException(e);
}
}
});
thread.start(); //启动线程
thread.join(); //让子线程执行完再执行主线程
//
}
return "success";
}
4、前端模板JSP
<%--
Created by IntelliJ IDEA.
User: Administrator
Date: 2023/2/12
Time: 1:51
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>$Title$</title>
</head>
<body>
<form method="post" action="${pageContext.request.contextPath}/upload" enctype="multipart/form-data" >
<input type="text" name="desc">
<input type="file" name="file01" >
<input type="submit" value="提交">
</form>
<hr>
多文件上传
<form method="post" action="${pageContext.request.contextPath}/uploads" enctype="multipart/form-data" >
<input type="text" name="desc">
<input type="file" name="file01" multiple accept="image/*">
<input type="submit" value="提交">
</form>
多文件上传 接收多线程
<form method="post" action="${pageContext.request.contextPath}/uploads01" enctype="multipart/form-data" >
<input type="text" name="desc">
<input type="file" name="file01" multiple accept="image/*">
<input type="submit" value="提交">
</form>
hao:
<img src="${pageContext.request.contextPath}/up/QQ截图20230204033515.png">
</body>
</html>
Intellj 环境下设置虚拟路径
1、添加虚拟文件
此处为运行根目录下面虚拟目录 如 /springmvc/up
2、勾选 部署已配置的……在Tomcat中
3、使用
<img src="${pageContext.request.contextPath}/up/QQ截图20230204033515.png">