springboot内嵌tomcat文件上传路径不存在bug解决
在开发上传功能时,发现在开发环境正常,在线上环境出现问题,经过定位发现tomcat临时目录导致的问题。
springboot内嵌tomcat,上传文件时会存放到tomcat临时文件目录(停止时删除/重启时新建),如:/tmp/tomcat.1046709481715876128.17301/work/Tomcat/localhost/cms
可知文件保存在/tmp目录下,/tmp目录在centos下会定时清理,大约10天未使用将会删除目录,(当tomcat未重启,但centos删除相应目录,tomcat获取相应目录却获取不到会报错)
解决方案:
配置multipartFile上传路径
1.application.properties 文件中添加
spring.http.multipart.location=${tmp.file.path} 注意:tmp.file.path 如果不存在,spring会认为是相对路径,对应根路径是tomcat临时文件目录
2
2.配置相应bean
/**
* 文件上传临时路径
*/
@Bean
MultipartConfigElement multipartConfigElement() {
MultipartConfigFactory factory = new MultipartConfigFactory();
factory.setLocation("/data/ops/app/cms/cache");
return factor
246810121416