Spring Boot 文件操作,上传浏览和删除

Posted 1994july

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Spring Boot 文件操作,上传浏览和删除相关的知识,希望对你有一定的参考价值。

视频演示: https://www.bilibili.com/video/BV1rv411B7fs/

一起来完成以下步骤:

该工程演示Spring Boot如何上传、展示和删除文件

  1. 页面引擎采用Thymeleaf

  2. 后端使用Spring Boot

  3. 文件上传使用Form提交方式(而不是Ajax方式或VUE前后端分离)

技术图片

#FileControlle.java

package com.deepincoding.fileuploadformpage;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.core.io.Resource;
import org.springframework.core.io.UrlResource; import org.springframework.http.HttpHeaders; import org.springframework.http.ResponseEntity; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.util.FileSystemUtils; import org.springframework.util.StringUtils; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; import org.springframework.web.servlet.mvc.method.annotation.MvcUriComponentsBuilder;  import java.io.IOException; import java.net.MalformedURLException; import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; import java.nio.file.StandardCopyOption; import java.util.List; import java.util.stream.Collectors;  @Controller public class FileController {   //上传文件路径  @Value("${file.base.director}")  private String fileBaseDirector;  private Path fileBasePath;   @Autowired  private void createDirectories(){  try {  Files.createDirectories(Paths.get(fileBaseDirector));  } catch (IOException e) {  e.printStackTrace();  }  this.fileBasePath = Path.of(fileBaseDirector);  }   /**  * 首页  * @return  */  @GetMapping("/")  public String index(){  return "index";  }   /**  * 上传页面  * @return  */  @GetMapping("/upload")  public String upload(){  return "upload";  }   /**  * 获取文件列表  * @return  * @throws IOException  */  @GetMapping("/files")  public String files(Model model) throws IOException {  List<FileObject> filesAll = Files.walk(fileBasePath,1)  .filter(path -> !path.equals(fileBasePath))  .map(path -> {  String url = MvcUriComponentsBuilder.fromMethodName(FileController.class,"loadFile",path.getFileName().toString()).build().toString();  FileObject fileObject = new FileObject(path.getFileName().toString(),url);  return fileObject;  }).collect(Collectors.toList());  model.addAttribute("files",filesAll);  return "files";  }   /**  * 删除文件  * @param fileName  * @return  */  @GetMapping("/delete/{fileName}")  public String deleteFile(@PathVariable String fileName){  Path deletePath = fileBasePath.resolve(fileName);  Boolean isDelete = Boolean.FALSE;  try {  isDelete = FileSystemUtils.deleteRecursively(deletePath);  } catch (IOException e) {  e.printStackTrace();  }  return "redirect:/files";  }    /**  * 上传文件事件  * @param file  * @return  */  @PostMapping("/upload")  public String upload(@RequestParam("file") MultipartFile file){  String fileName = StringUtils.cleanPath(file.getOriginalFilename());  Path path = Path.of(fileBaseDirector + fileName);  try {  Files.copy(file.getInputStream(),path,StandardCopyOption.REPLACE_EXISTING);  } catch (IOException e) {  e.printStackTrace();  }  return "redirect:/files";  }   }  

 推荐:快递员自曝收入,老员工告诉你实情

以上是关于Spring Boot 文件操作,上传浏览和删除的主要内容,如果未能解决你的问题,请参考以下文章

Spring Boot文件上传示例(Ajax和REST)

Spring Boot的文件上传与下载

Spring Boot MultipartFile 上传 getOriginalFileName 因浏览器而异

Spring Boot 2.x 实现文件上传与下载

Spring boot集成Go-FastDFS实现图片上传删除等功能

Spring Boot 嵌入式 Tomcat 文件上传url 映射虚拟路径