展开
拓展 关闭
订阅号推广码
GitHub
视频
公告栏 关闭

spring boot文件上传

保存到本地文件夹

  • 前端
<form role="form" th:action="@{/upload}" method="post" enctype="multipart/form-data">
<!-- 单个文件上传 -->
<input type="file" name="headerImg">
<!-- 多文件上传 -->
<input type="file" name="photos" multiple>
<button type="submit">提交</button>
</form>
  • 后端
@PostMapping("/upload")
public String upload(@RequestPart("headerImg") MultipartFile headerImg,
@RequestPart("photos") MultipartFile[] photos) throws IOException {
if(!headerImg.isEmpty()){ // 判断是否为空
// 保存到本地文件夹
String originalFilename = headerImg.getOriginalFilename();
headerImg.transferTo(new File("H:\\cache\\"+originalFilename));
}
if(photos.length > 0){
for (MultipartFile photo : photos) { // 遍历单个文件
if(!photo.isEmpty()){
String originalFilename = photo.getOriginalFilename();
photo.transferTo(new File("H:\\cache\\"+originalFilename));
}
}
}
return null;
}
  • 配置文件
spring.servlet.multipart.max-file-size=10MB # 上传单个文件大小
spring.servlet.multipart.max-request-size=100MB # 上传多个文件的总大小

上传到服务器

  • 业务逻辑:将文件上传到tomcat服务器,返回给前端一个路径;之后将这个路径存入数据库
@RestController
@CrossOrigin
public class FileUpload {
@RequestMapping("/upload")
public RespResult fileUpload(@RequestParam("file") MultipartFile file, HttpServletRequest req) {
try {
System.out.println("name+"+ file.getOriginalFilename());
String[] split = file.getOriginalFilename().split("[.]");
String hz = split[split.length -1]; // 获取文件后缀
String replace = UUID.randomUUID().toString().replace("-", "");
String url = getClass().getResource("/").getPath(); // 获取classes的路径
System.out.println("url:" + url);
String path = replace + "." + hz;
String realPath = req.getServletContext().getRealPath("/"); // 获取tomcat路径
System.out.println(realPath);
// 将文件写入tomcat,File.separator确保在任何系统中路径不会出错
file.transferTo(new File(realPath + File.separator + path));
return RespResult.success(path);
} catch (IOException e) {
e.printStackTrace();
return RespResult.error("文件上传异常");
}
}
}
posted @   DogLeftover  阅读(67)  评论(0编辑  收藏  举报
编辑推荐:
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
阅读排行:
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
点击右上角即可分享
微信分享提示