文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

上传文件提示java.io.IOException: java.io.FileNotFoundException:(系统找不到指定的路径。)

2023-08-16 16:55

关注

前端上传失败效果:

在这里插入图片描述
在这里插入图片描述

后端对应的异常输出信息:

在这里插入图片描述
在这里插入图片描述

关键信息:
java.io.IOException: java.io.FileNotFoundException: C:\Users\brendon\AppData\Local\Temp\tomcat.6510816303036534023.8099\work\Tomcat\localhost\ROOT\invoice\originalfile\2023-02-13\73432e18330dec9a05af2e74d068bfba83e0a88d.pdf (系统找不到指定的路径。)

Caused by: java.io.FileNotFoundException: C:\Users\brendon\AppData\Local\Temp\tomcat.6510816303036534023.8099\work\Tomcat\localhost\ROOT\invoice\originalfile\2023-02-13\73432e18330dec9a05af2e74d068bfba83e0a88d.pdf (系统找不到指定的路径。)
at java.io.FileOutputStream.open0(Native Method)
at java.io.FileOutputStream.open(FileOutputStream.java:270)
at java.io.FileOutputStream.(FileOutputStream.java:213)
at java.io.FileOutputStream.(FileOutputStream.java:162)
at org.apache.tomcat.util.http.fileupload.disk.DiskFileItem.write(DiskFileItem.java:406)
at org.apache.catalina.core.ApplicationPart.write(ApplicationPart.java:120)
… 92 more

此时后端对应的上传关键代码:

 //通过SHA1生成唯一文件名        String filename = hex.replaceAll("-","") + "." + suffix;        String fullPath = savePath +"/"+ filename;        System.out.println(fullPath);         try {            //将文件保存指定目录            file.transferTo(new File(fullPath));        } catch (Exception e) {            e.printStackTrace();            resultView.setCode(ResultEnums.FAILURE.getCode());            resultView.setMsg(ResultEnums.FAILURE.getMessage()+"保存文件异常");            return resultView;        }

在这里插入图片描述

原因分析:

运行在保存文件 file.transferTo(new File(fullPath))处报错:

String fullPath = savePath +"/"+ filename;是相对路径,指向invoice\originalfile\2023-02-13\73432e18330dec9a05af2e74d068bfba83e0a88d.pdf

file.transferTo 方法调用时,判断如果是相对路径,则使用temp目录,即C:\Users\brendon\AppData\Local\Temp\tomcat.6510816303036534023.8099\work\Tomcat\localhost\ROOT
位置不对,没有此目录存在,所以报错。

解决方案:transferTo 传入参数定义为绝对路径

关键代码:

File currFile = new File(new File(savePath).getAbsolutePath()+"/" + filename);

file.transferTo(currFile);

在这里插入图片描述

最终成功效果:

在这里插入图片描述
在这里插入图片描述
至此解决问题。

来源地址:https://blog.csdn.net/H_Dsheng/article/details/129018163

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯