springboot_上传文件至static目录下并显示到页面

深碍√TFBOYSˉ_ 2023-05-28 06:55 51阅读 0赞

其实springboot中上传文件和在springmvc中上传的方式基本一致,没多大区别,当然在springboot没多少配置,更加简单一点。

一、在application.properties中我们只需写上如下两行配置。

(其实不写这个也是可以的,只要你的单个文件小于1M)

  1. # 上传文件总的最大值
  2. spring.servlet.multipart.max-request-size=10MB
  3. # 单个文件的最大值(注:springboot默认的文件大小限制为1M)
  4. spring.servlet.multipart.max-file-size=5MB

二、完整例子(这里我们以上传图片演示)

我们先在static目录下创建一个upload目录

unloadController.java

  1. package com.rong.upload.controller;
  2. import org.springframework.stereotype.Controller;
  3. import org.springframework.util.ResourceUtils;
  4. import org.springframework.web.bind.annotation.RequestMapping;
  5. import org.springframework.web.multipart.MultipartFile;
  6. import org.springframework.web.servlet.ModelAndView;
  7. import javax.servlet.http.HttpSession;
  8. import java.io.File;
  9. import java.io.IOException;
  10. @Controller
  11. public class UploadController {
  12. //用于转到upload.html
  13. @RequestMapping("/totest")
  14. public String toUpload(){
  15. return "upload";
  16. }
  17. //用于接收文件
  18. @RequestMapping("/upload")
  19. public ModelAndView upload(MultipartFile photo) throws IOException {
  20. ModelAndView mv = new ModelAndView();
  21. //判断用户是否上传了文件
  22. if(!photo.isEmpty()){
  23. //文件上传的地址
  24. String path = ResourceUtils.getURL("classpath:").getPath()+"static/upload";
  25. String realPath = path.replace('/', '\\').substring(1,path.length());
  26. //用于查看路径是否正确
  27. System.out.println(realPath);
  28. //获取文件的名称
  29. final String fileName = photo.getOriginalFilename();
  30. //限制文件上传的类型
  31. String contentType = photo.getContentType();
  32. if("image/jpeg".equals(contentType) || "image/jpg".equals(contentType) ){
  33. File file = new File(realPath,fileName);
  34. //完成文件的上传
  35. photo.transferTo(file);
  36. System.out.println("图片上传成功!");
  37. String path01 = "../upload/"+fileName;
  38. mv.addObject("path" ,path01);
  39. mv.setViewName("lookphoto");
  40. return mv;
  41. } else {
  42. System.out.println("上传失败!");
  43. mv.setViewName("upload");
  44. return mv;
  45. }
  46. } else {
  47. System.out.println("上传失败!");
  48. mv.setViewName("upload");
  49. return mv;
  50. }
  51. }
  52. }

unload.html(用于上传文件)

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>upload</title>
  6. </head>
  7. <body>
  8. <form method="post" action="/upload" enctype="multipart/form-data">
  9. <input type="file" name="photo"><br>
  10. <input type="submit" value="提交">
  11. </form>
  12. </body>
  13. </html>

lookphoto.html(用于查看上传成功的图片)

  1. <!DOCTYPE html>
  2. <html xmlns:th="http://www.thymeleaf.org">
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>lookphoto</title>
  6. </head>
  7. <body>
  8. <img th:src="${path}">
  9. </body>
  10. </html>

三、演示结果

(1)输入localhost:8080/totest选择文件上传

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2NoYXNlcXJy_size_16_color_FFFFFF_t_70

(2)上传文件成功显示该图片

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2NoYXNlcXJy_size_16_color_FFFFFF_t_70 1

(3)查看target下是否有图片

20200328133726819.png

四、上传文件需要注意的地方

1.我们需要转发到html页面,所以别忘了添加thymeleaf模板引擎。

2.如果上面上传的文件路径存在问题,可以直接手写一个,例如D:\IdeaProjects\learnspringboot\upload\target\classes\static\upload(注意了\需要用\\转义)

3.查看上传成功的图片要到target目录下查看。

发表评论

表情:
评论列表 (有 0 条评论,51人围观)

还没有评论,来说两句吧...

相关阅读