MultipartFile.transferTo(dest) 报找不到文件

本文转载自:https://blog.csdn.net/woyaoxuexi10000nian/article/details/89318846

 

MultipartFile.transferTo(dest)报找不到文件

今天使用transferTo这个方法进行上传文件的使用发现了一些路径的一些问题,查找了一下记录问题所在

前端上传网页,使用的是单文件上传的方式

复制代码
 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <title>Title</title>
 6     <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
 7 </head>
 8 <body>
 9     <form enctype="multipart/form-data" method="post" action="/upload">
10         文件:<input type="file" name="head_img">
11         姓名:<input type="text" name="name">
12         <input type="submit" value="上传">
13 
14     </form>
15 
16 </body>
17 </html>
复制代码

后台网页

@Controller
@RequestMapping("/file")
public class UploadFileController {
@Value("${file.upload.path}")
private String path = “upload/”;

复制代码
 1 @RequestMapping(value = "fileUpload", method = RequestMethod.POST)
 2 @ResponseBody
 3 public String fileUpload(@RequestParam("file") MultipartFile file) {
 4     if (file.isEmpty()) {
 5         return "false";
 6     }
 7     String fileName = file.getOriginalFilename();
 8     File dest = new File(path + "/" + fileName);
 9     if (!dest.getParentFile().exists()) { 
10         dest.getParentFile().mkdirs();
11     }
12     try {
13         file.transferTo(dest); // 保存文件
14         return "true";
15     } catch (Exception e) {
16         e.printStackTrace();
17         return "false";
18     }
19 }
复制代码

这个确实存在一些问题

路径是不对的

dest 是相对路径,指向 upload/doc20170816162034_001.jpg
file.transferTo 方法调用时,判断如果是相对路径,则使用temp目录,为父目录
因此,实际保存位置为 C:\Users\xxxx\AppData\Local\Temp\tomcat.372873030384525225.8080\work\Tomcat\localhost\ROOT\upload\doc20170816162034_001.jpg

所以改为:

@Controller
@RequestMapping("/file")
public class UploadFileController {
@Value("${file.upload.path}")
private String path = “upload/”;

复制代码
 1 @RequestMapping(value = "fileUpload", method = RequestMethod.POST)
 2 @ResponseBody
 3 public String fileUpload(@RequestParam("file") MultipartFile file) {
 4     if (file.isEmpty()) {
 5         return "false";
 6     }
 7     String fileName = file.getOriginalFilename();
 8     File dest = new File(new File(path).getAbsolutePath()+ "/" + fileName);
 9     if (!dest.getParentFile().exists()) { 
10         dest.getParentFile().mkdirs();
11     }
12     try {
13         file.transferTo(dest); // 保存文件
14         return "true";
15     } catch (Exception e) {
16         e.printStackTrace();
17         return "false";
18     }
19 }
复制代码

 

posted on   德邦总管  阅读(234)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

导航

统计

点击右上角即可分享
微信分享提示