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/BeiJiuGuRen/p/15828582.html
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek “源神”启动!「GitHub 热点速览」
· 我与微信审核的“相爱相杀”看个人小程序副业
· 上周热点回顾(2.17-2.23)
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 如何使用 Uni-app 实现视频聊天(源码,支持安卓、iOS)