springboot多文件上传、删除、下载到项目本地
package com.example.demo.document; import cn.hutool.core.io.FileUtil; import cn.hutool.core.io.IoUtil; import cn.hutool.core.util.IdUtil; import org.springframework.web.multipart.MultipartFile; import javax.servlet.ServletOutputStream; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.File; /** * 文件上传、下载、删除 */ public class DocumentParse { /** * 文件批量上传 */ public void batchUpload(MultipartFile[] files, HttpServletRequest request) { // 定义文件上传路径 String path = ""; if (files.length > 0) { for (MultipartFile file : files) { String originalFilename = file.getOriginalFilename(); String id = IdUtil.createSnowflake(1, 1).nextIdStr(); String filePath = path + id + originalFilename.substring(originalFilename.lastIndexOf(".")); try { file.transferTo(new File(filePath)); } catch (Exception e) { } } } } /** * 下载 * * @param response */ public void download(HttpServletResponse response) { String filePath = "文件上传路径"; String fileName = "文件名称(包括文件格式)"; try { // 创建输出流对象 ServletOutputStream outputStream = response.getOutputStream(); //以字节数组的形式读取文件 byte[] bytes = FileUtil.readBytes(filePath); // 设置返回内容格式 response.setContentType("application/octet-stream"); // 把文件名按UTF-8取出并按ISO8859-1编码,保证弹出窗口中的文件名中文不乱码 // 中文不要太多,最多支持17个中文,因为header有150个字节限制。 // 这一步一定要在读取文件之后进行,否则文件名会乱码,找不到文件 fileName = new String(fileName.getBytes("UTF-8"), "ISO8859-1"); // 设置下载弹窗的文件名和格式(文件名要包括名字和文件格式) response.setHeader("Content-Disposition", "attachment;filename=" + fileName); // 返回数据到输出流对象中 outputStream.write(bytes); // 关闭流对象 IoUtil.close(outputStream); } catch (Exception ignored) { } } /** * 删除 */ public void delete() { String filePath = "文件上传路径"; File file = new File(filePath); if (file.exists()) { file.delete(); } } }
来源:https://www.cnblogs.com/good--luck/p/15828582.html