java 上传图片 tmp,SpringBoot 上传文件到linux服务器 异常java.io.FileNotFoundException: /tmp/tomcat.50898……解决方案...

我的项目在本地是可以正常跑的,一放到服务器上其他功能都正常,就上传功能报错

一开始我是把上传图片的路径放到webapp里的,但是一直报这个错误

java.io.IOException: java.io.FileNotFoundException: /tmp/tomcat.5089835798184465073.8081/work/Tomcat/localhost/ROOT/

Java解决java.io.FileNotFoundException: E:\work\work (拒绝访问。)

之后把路径改成了放到resource的static的upload里,也还是不行

后来我翻到一大神也遇到这错误

https://blog.csdn.net/Ani521smile/article/details/83660328

于是就在path的路径前加了一个斜杠 /

String path=File.separator +ClassUtils.getDefaultClassLoader().getResource("static/upload").getPath();

终于不报错了!!

但是用%24%7Buser_session.imageLu%7D

也获取不到这图片的路径

实在没办法只能去git上看看别人的上传图片是怎么写的了

于是找到这位大神的,不过他的路径是写死的,也行,可以试试

https://gitee.com/yangyouqi/upload_picture_test

发现他没有写显示图片的页面后又找了怎么显示页面

https://blog.csdn.net/capricornce/article/details/83868882

最后结合他们的代码再把试试,发现还是不行。

可幸运的是,我突然灵光一闪,会不会是获取也要斜杆

真的被我猜中了,终于解决了这困了我两天的bug

我了我这么久 我要记录一下我的解bug思路(字有点丑)

92123582d055c95cfeb905e68a252cfa.png

具体代码如下:

控制类

//中间这一串是处理注册时上传的图片image保存到 “当前绝对路径+/upload”

// 上传文件路径

String path= "/D:/项目上传的图片/img/";

System.out.println("------------------------------------------------"+path);

// 上传文件名

String filename = user.getImage().getOriginalFilename();

System.out.println("----------------------------------------"+filename);

//新建filename之前的目录path

File filepath = new File(path,filename);

// 判断路径是否存在,如果不存在就创建一个

if (!filepath.getParentFile().exists()) {

filepath.getParentFile().mkdirs();

}

// 先新建filename这个文件,再将上传的文件存到那

File file = new File(path+File.separator+filename);

user.getImage().transferTo(file);

//将图片的地址(上传的文件名)赋值给ImageLu

user.setImageLu(filename);

显示的图片

路径的配置类,没真这个不行

import org.springframework.context.annotation.Configuration;

import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;

import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;

@Configuration

public class MyWebMvcConfigurerAdapter extends WebMvcConfigurerAdapter {

@Override

public void addResourceHandlers(ResourceHandlerRegistry registry){

/**

* @Description: 对文件的路径进行配置, 创建一个虚拟路径/file/**

*这是图片的物理路径 "file:/+本地图片的地址"

* 当路径写/file/**时,其实意思是"file:D:/项目上传的图片/img/"

*/

String url1 = "/D:/项目上传的图片/img/";

registry.addResourceHandler("/file1/**").addResourceLocations("file:" + url1);//当路径写/file/**时,其实意思是"file:D:/项目上传的图片/img/"

super.addResourceHandlers(registry);

}

}

%24%7Buser_session.imageLu%7D

刚刚突然发现只要加了“/”,好像都是能上传成功的,只是我没显示出来而已,惊讶

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值