SpringMVC 文件上传

1. 文件上传实现流程

1.1. 依赖

1
2
3
4
5
6
7
8
9
10
11
12
<!-- SpringMVC -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>${spring.version}</version>
</dependency>
<!-- 文件上传 -->
<dependency>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
<version>1.4</version>
</dependency>

1.2. 配置CommonsMultipartResolver

1
2
3
4
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<property name="maxUploadSize" value="#{1024 * 1024 * 10}"/>
<property name="defaultEncoding" value="utf-8"/>
</bean>

1.3. 处理文件上传请求

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
@Controller
public class HelloController {
@PostMapping("/file/upload")
public void fileUpload(MultipartFile file, HttpServletRequest request) {
try {
InputStream in = file.getInputStream();
String filename = file.getOriginalFilename();
System.out.println("filename = " + filename);
// 复制到本地
FileUtils.copyInputStreamToFile(in, new File("C:\\" + filename));
} catch (IOException e) {
e.printStackTrace();
}
}
}

1.4. 测试

Postman向发起请求:localhost:8080/file/upload

  • Headers设置 Content-Typemultipart/form-data
  • Body将选中数据格式为form-data,添加一对key-value,key为file,value选择文件类型,上传文件

2. 多文件同步上传

前面的步骤不改变,只要修改一下Controller

1
2
3
4
5
6
7
8
9
10
11
12
13
@PostMapping("/upload")
public void upload(MultipartFile[] file) {
for (MultipartFile multipartFile : file) {
if (!multipartFile.isEmpty()) {
try {
// 保存文件到本地
multipartFile.transferTo(new File("C:\\" + multipartFile.getOriginalFilename()));
} catch (IOException e) {
e.printStackTrace();
}
}
}
}

Postman向发起请求:localhost:8080/upload

  • Headers设置 Content-Typemultipart/form-data,没有变化
  • Body将选中数据格式为form-data,添加多对key-value,key全都为file,value选择文件类型,上传文件
panchaoxin wechat
关注我的公众号
支持一下