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
至此,一个简单的图片上传逻辑就完成了,对于开发者而 ,只需要专注于图片上传的业业务逻辑,而不需要在配置上花费太多时间。
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于