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.
我的项目在本地是可以正常跑的,一放到服务器上其他功能都正常,就上传功能报错
一开始我是把上传图片的路径放到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();
终于不报错了!!
但是用
也获取不到这图片的路径
实在没办法只能去git上看看别人的上传图片是怎么写的了
于是找到这位大神的,不过他的路径是写死的,也行,可以试试
https://gitee.com/yangyouqi/upload_picture_test
发现他没有写显示图片的页面后又找了怎么显示页面
https://blog.csdn.net/capricornce/article/details/83868882
最后结合他们的代码再把试试,发现还是不行。
可幸运的是,我突然灵光一闪,会不会是获取也要斜杆
真的被我猜中了,终于解决了这困了我两天的bug
我了我这么久 我要记录一下我的解bug思路(字有点丑)
具体代码如下:
控制类
//中间这一串是处理注册时上传的图片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);
}
}
刚刚突然发现只要加了“/”,好像都是能上传成功的,只是我没显示出来而已,惊讶
更多推荐
所有评论(0)