当前位置:   article > 正文

Java实现文件上传与下载_前端上传文件到后端

前端上传文件到后端

一、前端的要求

1.采用post方式提交数据

2.采用multipart格式上传文件

3.使用input的file控制上传

例:

  1. <form method="post" action="/common/upload" enctype="multipart/form-data">
  2. <input name="file" type="file"/>
  3. <input type="submit" value="提交" />
  4. </form>

二、导入对应坐标

  1. <dependency>
  2. <groupId>commons-fileupload</groupId>
  3. <artifactId>commons-fileupload</artifactId>
  4. <version>1.3.1</version>
  5. </dependency>
  6. <dependency>
  7. <groupId>commons-io</groupId>
  8. <artifactId>commons-io</artifactId>
  9. <version>2.4</version>
  10. </dependency>

三.后端处理

1.上传文件

使用MultipartFile来获取文件信息以及转存文件

代码如下(示例):

  1. @Value("${reggie.path}")
  2. private String reggiepath;
  3. /**
  4. * 文件上传
  5. */
  6. @PostMapping("/upload")
  7. public Result<String> upfile(MultipartFile file) {
  8. // 获取文件名
  9. String originalFilename = file.getOriginalFilename();
  10. // 获取文件后缀名
  11. String substring = originalFilename.substring(originalFilename.lastIndexOf("."));
  12. // 用UUID随机生成文件名,防止文件名重复导入文件覆盖
  13. String filename = UUID.randomUUID().toString() + substring;
  14. // 判断当前文件是否存在
  15. File file1 = new File(reggiepath);
  16. if (!file1.exists()) {
  17. // 不存在,需要创建
  18. file1.mkdir();
  19. }
  20. // 保存文件到指定位置
  21. try {
  22. file.transferTo(new File(reggiepath + filename));
  23. } catch (IOException e) {
  24. throw new FileException("文件上传失败");
  25. }
  26. return Result.success(filename);
  27. }

2.下载文件

  1. /**
  2. * 文件下载
  3. */
  4. @GetMapping("/download")
  5. public void download(String name, HttpServletResponse response) {
  6. try {
  7. // 输入流,读取文件内容
  8. FileInputStream fileInputStream = new FileInputStream(new File(reggiepath+name));
  9. // 输出流,将文件写回浏览器
  10. ServletOutputStream servletOutputStream = response.getOutputStream();
  11. // 响应格式(图片)
  12. response.setContentType("image/jpeg");
  13. int len = 0;
  14. byte[] bytes = new byte[1024];
  15. while ((len = fileInputStream.read(bytes)) != -1) {
  16. servletOutputStream.write(bytes,0,len);
  17. servletOutputStream.flush();
  18. }
  19. fileInputStream.close();
  20. servletOutputStream.close();
  21. } catch (Exception e) {
  22. e.printStackTrace();
  23. }
  24. }

3.配置类配置上传的文件大小

如果是springboot过程的话有默认,可以不用配置

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小舞很执着/article/detail/805569
推荐阅读
相关标签
  

闽ICP备14008679号