本文转载自: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 }
标签:transferTo,return,String,dest,upload,报找,file From: https://www.cnblogs.com/zhncnblogs/p/17861252.html