SpringBoot文件操作,上传、浏览和删除

编程

视频演示: 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; @ControllerpublicclassFileController{ //上传文件路径@Value("${file.base.director}") private String fileBaseDirector; private Path fileBasePath; @AutowiredprivatevoidcreateDirectories(){ 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"; } }

 

以上是 SpringBoot文件操作,上传、浏览和删除 的全部内容, 来源链接: utcz.com/z/517817.html

回到顶部