报错日志:
The temporary upload location
[/tmp/tomcat.7957874575370093230.8088/work/Tomcat/localhost/ROOT] is not valid.........
异常原因:
在linux系统中,springboot应用服务再启动(java -jar 命令启动服务)的时候,会在操作系统的/tmp目录下生成一个tomcat*的文件目录,上传的文件先要转换成临时文件保存在这个文件夹下面。由于临时/tmp目录下的文件,10天就会被系统机制自动删除掉。所以会出现找不到该路径的异常。
1. 临时解决方式:
可以重启服务,让springboot重新生成临时路径,当然,这个不可取,不建议再生产环境使用
2.修改配置文件
在application.yml重新配置一个文件目录,然后重启项目(此方法会讲所有tomcat临时文件放在指定目录,新目录没有定时清理功能,不建议)
3.修改配置类
配置类配置临时文件存储目录(需要手动在服务器上创建目录/data/apps/temp)
@Configuration
public class MultipartConfig {
文件上传临时路径
@Bean
MultipartConfigElement multipartConfigElement() {
MultipartConfigFactory factory = new MultipartConfigFactory();
String location = System.getProperty("user.dir") + "/data/tmp";
File tmpFile = new File(location);
if (!tmpFile.exists()) {
tmpFile.mkdirs();
}
factory.setLocation(location);
return factory.createMultipartConfig();
}
}
4.application.yml 文件中添加
spring.http.multipart.location=${tmp.file.path} 注意:tmp.file.path 如果不存在,spring会认为是相对路径,对应根路径是tomcat临时文件目录
5.参考文章
https://blog.csdn.net/llibin1024530411/article/details/79474953
https://blog.csdn.net/u012706811/article/details/52833682