如何快速找回意外删除的Excel文件?
864
2022-05-29
文章目录
一、SpringMVC上传文件
二、SpringBoot文件上传
1、添加依赖
2、配置
3、上传单个文件
4、上传多个文件
5、文件下载
一、SpringMVC上传文件
Spring MVC 文件上传提供了良好的支持 ,而在 Spring Boot 更为简单地配置文件上传
所需的内容。
SpringMVC 中对文件上传做了封装,可以实现更简单地文件上传。从 Spring3.1 开始,对于文件上传,提供了两个处理器:
CommonsMultipartResolver
StandardServletMultipartResolver
第一个处理器兼容性较好,可以兼容 Servlet3.0 之前的版本,但是它依赖了 commons-fileupload 这个第三方工具,所以如果使用这个,一定要添加 commons-fileupload 依赖。
第二个处理器兼容性较差,它适用于 Servlet3.0 之后的版本,它不依赖第三方工具,使用它,可以直接做文件上传。
二、SpringBoot文件上传
我们这里采用StandardServletMultipartResolver处理器来上传文件:
1、添加依赖
1
2
3
4
2、配置
#⽀持的最⼤⽂件 spring.servlet.multipart.max-file-size=100MB #⽂件请求最⼤限制 spring.servlet.multipart.max-request-size=100MB
1
2
3
4
除了这两个配置之外常用的配置:
spring.servlet.multipart.enabled=true,是否⽀持 multipart 上传⽂件
spring.servlet.multipart.file-size-threshold=0,⽀持⽂件写⼊磁盘
spring.servlet.multipart.location=,上传⽂件的临时⽬录
spring.servlet.multipart.max-file-size=10Mb,最⼤⽀持⽂件⼤⼩
spring.servlet.multipart.max-request-sizee=10Mb,最⼤⽀持请求⼤⼩
spring.servlet.multipart.resolve-lazily=false,是否⽀持 multipart 上传⽂件时懒加载
3、上传单个文件
可以用SpringBoot默认的thymeleaf模板,这里就只写后端的接口。
同样地,偷了下懒,异常处理和结果封装都没有写……
/** * 上传单个文件 * * @param file * @param redirectAttributes * @return */ @PostMapping("/upload") public String singleFileUpload(@RequestParam("file") MultipartFile file, RedirectAttributes redirectAttributes) { //文件非空判断 if (file.isEmpty()) { redirectAttributes.addFlashAttribute("message", "请选择一个文件"); return "文件为空,请重新上传"; } try { // Get the file and save it somewhere byte[] bytes = file.getBytes(); // UPLOADED_FOLDER ⽂件本地存储地址 Path path = Paths.get(UPLOADED_FOLDER + file.getOriginalFilename()); //保存文件 Files.write(path, bytes); } catch (IOException e) { e.printStackTrace(); } return "上传文件成功!"; }
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
用PostMan测试:
4、上传多个文件
稍作修改,MultipartFile 需要修改为按照数组的⽅式去接收。
/** * 上传多个文件 * * @param files * @param redirectAttributes * @return */ @PostMapping("/uploadMore") public String moreFileUpload(@RequestParam("file") MultipartFile[] files, RedirectAttributes redirectAttributes) { if (files.length == 0) { return "文件不能为空,请选择一个文件!"; } for (MultipartFile file : files) { try { byte[] bytes = file.getBytes(); Path path = Paths.get(UPLOADED_FOLDER + file.getOriginalFilename()); Files.write(path, bytes); } catch (IOException e) { e.printStackTrace(); } } return "所有文件上传成功!"; }
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
用PostMan测试:
5、文件下载
/** * 下载文件 * @param response * @param fileName * @return */ @GetMapping("/downloadFile") public String downloadFile(HttpServletResponse response, @RequestParam("fileName") String fileName) { File file = new File(UPLOADED_FOLDER+fileName); if (!file.exists()) { return "文件不存在!"; } response.reset(); response.setHeader("Content-Disposition", "attachment;fileName=" + fileName); try { InputStream inStream = new FileInputStream(fileName); OutputStream os = response.getOutputStream(); byte[] buff = new byte[1024]; int len = -1; while ((len = inStream.read(buff)) > 0) { os.write(buff, 0, len); } os.flush(); os.close(); inStream.close(); } catch (Exception e) { e.printStackTrace(); } return "下载成功!"; }
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
由于接口是get请求方式,所以直接用浏览器访问 localhost:8080/downloadFile?fileName=001.jpg:
本文为学习笔记类博客,学习资料来源见参考!
参考:
【1】:《精通 Spring Boot 42 讲》
【2】:SpringBoot | 第十七章:web应用开发之文件上传
【3】:《深入浅出SpringBoot2.X》
【4】:SpringMVC 教程–8. 文件上传
【5】:SpringBoot 文件上传、下载、设置大小
【6】:Spring Boot 上传文件
Spring Spring Boot
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。