文件上传提示C:\Users\xxxx\AppData\Local\...系统找不到指定的路径问题修复 |
您所在的位置:网站首页 › apache系统找不到指定的路径 › 文件上传提示C:\Users\xxxx\AppData\Local\...系统找不到指定的路径问题修复 |
1、报错案例代码 后端: public UploadRes upLoadFile(MultipartFile file, String savePath) {UploadRes uploadRes = new UploadRes();try {File saveDir = new File(savePath).getParentFile();// 判断路径是否存在,如果不存在就创建一个if (saveDir != null && !saveDir.exists()) {saveDir.mkdirs();}file.transferTo(new File(savePath));uploadRes.setFlag(true);uploadRes.setResFilePath(savePath);uploadRes.setMsg("文件上传成功");uploadRes.setOriFileName(file.getOriginalFilename());} catch (Exception e) {e.printStackTrace();uploadRes.setFlag(false);uploadRes.setMsg("文件存储失败");}return uploadRes;}本例运行时参数 savePath为相对路径/home/upload/aaa.jpg 在执行file.transferTo(new File(savePath))时,报错提示 FileNotFoundException: C:\Users\XXX\AppData\Local\Temp\tomcat.9095.675054628671612619\work…(系统找不到指定的路径)。 2、修改后代码示例 public UploadRes upLoadFile(MultipartFile file, String savePath) {UploadRes uploadRes = new UploadRes();try { // File saveDir = new File(savePath).getParentFile(); // // 判断路径是否存在,如果不存在就创建一个 // if (saveDir != null && !saveDir.exists()) { // saveDir.mkdirs(); // } // // file.transferTo(new File(savePath));// 相对路径转绝对路径进行保存,防止相对路径找不到临时文件File dest = new File(new File(savePath).getAbsolutePath());if (!dest.getParentFile().exists()) {dest.getParentFile().mkdirs();}file.transferTo(dest);uploadRes.setFlag(true);uploadRes.setResFilePath(savePath);uploadRes.setMsg("文件上传成功");uploadRes.setOriFileName(file.getOriginalFilename());} catch (Exception e) {e.printStackTrace();uploadRes.setFlag(false);uploadRes.setMsg("文件存储失败");}return uploadRes;}此时运行提交,代码没有报错,文件上传成功。 运行时new File(savePath).getAbsolutePath()后,可以debugger看到文件路径为D:\home\upload\aaa.jpg 3、问题分析: 可以通过参数看到,错误案例时,上传文件的路径为相对路径。成功的案例因为多new File转为绝对路径。 file.transferTo(dest);会根据dest文件的实例化路径去做处理。判断如果是相对路径,则使用temp目录,就是上诉报错的C:\Users\XXX\AppD…。如果是绝对路径就可以找到直接运输保存到新文件。 当然本例仅为file.transferTo(dest)方法的修复,也可以通过其他方式, 如:引入 commons-io commons-io 2.5 调用如下的方法 FileUtils.copyInputStreamToFile(MultipartFile.getInputStream(),destFile); 经过调试应该也是可以的。 学海无涯苦作舟!!! |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |