首页 > 其他分享 >MultipartFile.transferTo(dest) 报找不到文件

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

时间:2023-11-28 10:23:42浏览次数:33  
标签:transferTo return String dest upload 报找 file

本文转载自: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

相关文章

  • SpringBean生命周期之PostConstruct、PreDestroy详解
    @PostConstruct less复制代码@Documented@Retention(RUNTIME)@Target(METHOD)public@interfacePostConstruct{}该注解只能作用于方法上,执行依赖注入后执行任何初始化操作。必须在类投入服务之前调用此方法。应用PostConstruct的方法可以是公共的、受保护的......
  • WM_CLOSE、WM_DESTROY、WM_QUIT及各种消息投递函数详解
     对WM_CLOSE、WM_DESTROY、WM_QUIT及各种消息投递函数的功能及区别做出了分析比对,有助于读者更好的对消息投递函数加以理解。详情如下:一、WM_CLOSE、WM_DESTROY、WM_QUIT区别WM_CLOSE:关闭应用程序窗口WM_DESTROY:关闭应用程序WM_QUIT:关闭消息循环只有关闭了消息循环,应用程序......
  • CF543B Destroying Roads
    好经典的题,因为暑假前集训做过类似的思想的题所以知道怎么处理这题由于要求最多的删去的边数,则等价于求最少保留几条边,很显然留下的边一定是最短路上的但问题是如果两条路不相交的话很简单,可事实是两条路径可以重叠一些部分,这些边用了两次可能可以使答案变优关于这种图上两条路......
  • 做过destoon和discuz之后的总结。
    做过了destoon和discuz这两种相对复杂一点的模版二次开发以后,总想写点总结,对再次学习其他模版有所启迪。1、给我的印象,PHP模版,大都是include各种文件,而且include的类型也不只一种,如:includetemplate是用模版引擎解析模版, includelibfile是加载后台文件(discuz中的),当我们接触一......
  • CF963B Destruction of a Tree 题解
    CF963BDestructionofaTree题解  洛谷题目链接  这里提供一个较为朴素的DP想法。题意简述  给定一棵树,节点个数不超过\(2\times10^5\),每次可以删掉度数为偶数的点。问最后能不能删完;能删完给出删除方案。思路分析  首先可以随便选一个点作为根。  其次,......
  • destoon开发笔记-调取资讯标题图
    今天也没做什么,就帮一个朋友调试了DT内核开发的模板,调取资讯内容第一张图作为标题图,网上也有一些教程,感觉不太好,所以我就写详细一些,希望对大家有帮助! 第一步:修改module\article\admin\template\edit.tpl.php     1<inputname="post[thumb_no]" type="te......
  • destoon提示http 403 forbidden解决方法
    近做了一个模拟http抓取网站,网址:https://www.clw9335.com/gl/ 去模拟抓取destoon站时候出现http403forbidden问题,必须要植入cookie才能抓取成功,最后找到问题所在。 找到/include/safe.func.php:    12345678function strip_key($array){  ......
  • Destoon Global 全局函数对应表
    函数名称https://www.clw9335.com/gl/index-htm-page-5.html作用参数dhtmlspecialchars($string)替换字符串中的&为&字符串daddslashes($string)字符转译字符串dstripslashes($string)字符反转译字符串dsafe($string)字符......
  • destoon网站转移空间教程
    1、首先登录Destoon后台,进入数据库维护  进入数据库恢复,如果有之前备份的文件,先全部删除  进入数据库备份,备份系统所有表  如果更换了域名,点击字符替换  选择一个备份系列  查找里填写旧的域名  替换里填写新的域名https://www.clw9335.com/zx/index-htm-pag......
  • destoon : 后台无法登录问题解决
    经常有朋友在destoon搬家的时候,数据还原之后,会出现后台无法登录的情况.具体表现为后台帐号密码输入后点击确定,页面刷新.并没有跳转到相应后台页面.但是如果帐号密码输入错误,会提示密码错误的情况.这种情况多半是原系统设置中,设置了cookie作用域的问题,如......