1.首先创建一个 Spring Boot 项目并添 spring-boot-starter-web 依赖。
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
2.然后在 resources 录下的 static 目录中创建一个 upload.html 文件,内容如下:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<form action="/upload" method="post" enctype="multipart/form-data">
<input type="file" name="uploadFile" value="请选择文件">
<input type="submit" value="上传">
</form>
</body>
</html>
这是一个很简单的文件上传页面,上传接口是/upload 注意请求方法是 post , enctype 是 multipart/form-data
3.接着创建文件上传处理接口,代码如下:
@RestController
public class FileUploadController {
SimpleDateFormat sdf=new SimpleDateFormat("yyyy/MM/dd");
@PostMapping("/upload")
public String upload2(MultipartFile uploadFile, HttpServletRequest req){
//获取文件名
String fileName = uploadFile.getOriginalFilename();
//获取文件后缀名
String suffixName = fileName.substring(fileName.lastIndexOf("."));
//重新生成文件名
fileName = UUID.randomUUID()+suffixName;
//指定本地文件夹存储图片
String filePath = "E:\\eclipse-workspace\\chapter\\bv_4_1\\src\\main\\resources\\static\\";
try {
//将图片保存到static文件夹里
uploadFile.transferTo(new File(filePath+fileName));
String filePath2=req.getScheme()+"://"+req.getServerName()+":"+req.getServerPort()+"/"+fileName;
//返回图片地址
return filePath2;
} catch (Exception e) {
e.printStackTrace();
return "失败";
}
}
}
4.运行项目,在浏览器中输入 http://localhost:8080/upload.html 进行文件上传
上传成功界面:
刷新 static 出现对应的文件:
5.大文件上传失败(解决办法)
以上上传文件限制为 1M 以内,我们可以通过配置文件进行设置。源码如下:
#是否开启文件上传支持,默认为 true
#spring.servlet.multipart.enabled=true
#文件写入磁盘的闽值,默认为0
#spring.servlet.multipart.file-size-threshold=0
#上传文件的临时保存位直
#spring.servlet.multipart.location=E:\\temp
#是否延迟解析
#spring.servlet.multipart.resolve-lazily=false
#上传文件最大
spring.servlet.multipart.max-file-size=10MB
#多文件上传最大总值
spring.servlet.multipart.max-request-size=100MB
至此,一个简单的图片上传逻辑就完成了,对于开发者而 ,只需要专注于图片上传的业业务逻辑,而不需要在配置上花费太多时间。
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于