问题描述
springboot linux 上传图片, 本地配置上传文件路径可以使用,但是Linux系统配置和本地环境不一样。
我按照网上说的配置这个,但是本地是例如:D://temp//
发现这两个配置是一样的
然后部署服务是上传文件时候报错如下:
解决:
后来经过半天调试测试发现,window文件目录和Linux目录是不一样的,例如:
window和 Linux 是这样的写的:
String os = System.getProperty("os.name");
File imagePath;
String imageTemp;
String datePath = dateFormat.format(new Date());
if (os.toLowerCase().startsWith("win")) {
//windows系统
String path = System.getProperty("user.dir"); //获取项目相对路径
imageTemp = path+"\\src\\main\\resources\\static\\images\\"+datePath;
}else{
//linux系统
//如果是linux环境下,目录为jar包同级目录
File rootPath = new File(ResourceUtils.getURL("classpath:").getPath());
if(!rootPath.exists()){
rootPath = new File("");
}
imageTemp = rootPath.getAbsolutePath()+"/images/"+datePath;
}
这样就可以获取当前jar 文件的目录位置,可以对两个平台进行兼容。更多代码参考文档:springboot项目实现图片和文件上传,上传之后在前端页面进行展示以及下载(Linux+Windows) - QiuC - 博客园
我花费1天的时间终于找到问题的所在,之前问题一直在这里报错。
multipartFile.transferTo(imageResultPath);
后来经过测试发现是文件路径没有配置对,修改成正确的路径后发现上传成功。
imageResultPath 关键在于这个路径位置,Linux和window是不一样的。希望对你有帮助少花费时间去解决这个问题。
学习技术欢迎加入QQ群交流学习:216022706