springboot內(nèi)嵌tomcat铣口,上傳文件時會存放到tomcat臨時文件目錄(停止時刪除/重啟時新建)镜粤,如:/tmp/tomcat.1046709481715876128.17301/work/Tomcat/localhost/cms
可知文件保存在/tmp目錄下,/tmp目錄在centos下會定時清理髓需,大約10天未使用將會刪除目錄许师,(當(dāng)tomcat未重啟,但centos刪除相應(yīng)目錄,tomcat獲取相應(yīng)目錄卻獲取不到會報錯)
解決方案:
一 配置multipartFile上傳路徑(推薦)
1.application.properties 文件中添加
spring.http.multipart.location=${tmp.file.path} 注意:tmp.file.path 如果不存在微渠,spring會認(rèn)為是相對路徑搭幻,對應(yīng)根路徑是tomcat臨時文件目錄
2.配置相應(yīng)bean
/**
* 文件上傳臨時路徑
*/
@Bean
MultipartConfigElement multipartConfigElement() {
MultipartConfigFactory factory = new MultipartConfigFactory();
factory.setLocation("/data/ops/app/cms/cache");
return factor
二 修改tomcat臨時存放文件位置(不建議)
application.properties 文件中添加 (此方法會講所有tomcat臨時文件放在指定目錄,新目錄沒有定時清理功能逞盆,不建議)
server.tomcat.basedir=/data/ops/app/cms/cache
三 修改centos定時清理功能(不建議)
vim /etc/cron.daily/tmpwatch
#! /bin/sh
flags=-umc
/usr/sbin/tmpwatch "$flags" -x /tmp/.X11-unix -x /tmp/.XIM-unix \
-x /tmp/.font-unix -x /tmp/.ICE-unix -x /tmp/.Test-unix \
-X '/tmp/hsperfdata_*' 10d /tmp \
-X '/tmp/tomcat.*' 10d /tmp
/usr/sbin/tmpwatch "$flags" 30d /var/tmp
for d in /var/{cache/man,catman}/{cat?,X11R6/cat?,local/cat?}; do
if [ -d "$d" ]; then
/usr/sbin/tmpwatch "$flags" -f 30d "$d"
fi
done
其中添加一行
-X '/tmp/tomcat.*' 10d /tmp