Spring Boot实现文件上传功能
1.添加配置文件
Spring Boot工程嵌入的tomcat限制了请求的文件大小,
每个文件的配置最大为1Mb,
单次请求的文件的总数不能大于10Mb。
要更改这个默认值需要在配置文件(如application.properties)
中加入两个配置
// 每个文件的配置最大为10Mb
spring.servlet.multipart.max-file-size=10MB
// 单次请求的文件的总数不能大于10Mb
spring.servlet.multipart.max-request-size=10MB
2.jsp界面
<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>
<html>
<head>
<title>Title</title>
</head>
<body>
<form action="/upload" enctype="multipart/form-data" method="post">
用户名:<input type="text" name="name"/><br>
头 像:<input type="file" name="photo"/><br>
<input type="submit" value="上传"/>
</form>
</body>
</html>
当表单的enctype="multipart/form-data"时,可以使用MultipartFile
获取上传的文件数据,再通过transferTo方法将其写入到磁盘中
3.Controller接收jsp传递的数据
@PostMapping("/upload")
public String File(String name, MultipartFile photo, HttpServletRequest request) throws IOException {
System.out.println(name);
// 获取图片的原始名称
System.out.println(photo.getOriginalFilename());
// 获取文件类型
System.out.println(photo.getContentType());
// 动态获取web服务器的运行目录
String path = request.getServletContext().getRealPath("/upload/");
System.out.println(path);
saveFile(photo, path);
return "上传成功";
}
public void saveFile(MultipartFile photo, String path) throws IOException {
// 判断存储目录是否存在,如果不存在就创建
File dir = new File(path);
if (!dir.exists()) {
// 创建目录
dir.mkdir();
}
File files = new File(path + photo.getOriginalFilename());
photo.transferTo(files);
}
4.运行结果
参考B站视频 https://www.bilibili.com/video/BV1nV4y1s7ZN?p=4&vd_source=4635338a4ba3d138feac02fc9c626af7