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 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);
经过调试应该也是可以的。
学海无涯苦作舟!!!
判断如果是相对路径,则使用temp目录,就是上诉报错的C:\Users\XXX\AppD…FileNotFoundException: C:\Users\XXX\AppData\Local\Temp\tomcat.9095.675054628671612619\work…运行时new File(savePath).getAbsolutePath()后,可以debugger看到文件路径为D:\home\upload\aaa.jpg。可以通过参数看到,错误案例时,上传文件的路径为相对路径。
解决上
传文件提示java.io.IOException: java.io.FileNotFoundException:
系统找不到
指定的
路径。
file.transferTo 方法调用时,判断如果是相对
路径,则使用temp目录。
transferTo
传入参数定义为绝对
路径。
很多人发现电脑中C:\Users\用户名\AppData 占据了很大的空间,这些文件都是什么?可以将其删除吗?下面为大家详细介绍相关知识!
C:\Users\用户名\AppData里面一般有三个文件夹,分别是Local,LocalLow,Roaming,简单地来说,都是用来存放软件的配置文件和临时文件的,里面有很多以软件名称或软件公司命名的文件夹,理论上都可以删除。但是但是尽量不要删除,这里边存放的是软件运行时和结束后的数据和配置文件,如果删了,会导致软件不正常或者出错
举个例子:
例如,如果安装了Phot
1、
问题描述:
想要
找到 ‘C:\
Users\dell\
AppData\Roaming’ 中的某个
文件,却发现
找不到
AppData 文件夹;
2、
问题展示:
即便是打开了 ‘C:\
Users\dell’ ,在其中也
找不到 ‘
AppData’ 这个
文件夹,原因是被隐藏起来了;
3、
问题分析:
**认为原因:**是为了保护相关数据的安全而被隐藏保护了起来,但也是可以把其隐藏显示出来的;
4、解决的
问题方法:
其一、打开到 ‘
AppData’ 上一层的
文件夹的位置:‘C:\
Users\dell’;
根据引用,可以直接在C:\Users\Admin\AppData\Local\Temp目录下找到一个名为rebel.xml的拷贝文件,并将其复制到相应的目录下。另外,也可以根据引用中的示例,在项目目录下创建一个名为rebel.xml的文件,并在其中添加相应的配置信息。引用中指出,使用eclipse安装了jebel插件后,项目会自动生成rebel.xml文件。如果在更新、清理垃圾等操作后出现问题,可能是因为找不到rebel.xml文件。解决这个问题的方法是确认rebel.xml文件的路径是否正确,并确保文件存在于该路径下。<span class="em">1</span><span class="em">2</span><span class="em">3</span>