美文网首页
springboot内嵌tomcat文件上传路径不存在bug解决

springboot内嵌tomcat文件上传路径不存在bug解决

作者: aljg1999 | 来源:发表于2019-02-19 15:44 被阅读0次

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.配置相应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

方法三参考来源

相关文章

网友评论

      本文标题:springboot内嵌tomcat文件上传路径不存在bug解决

      本文链接:https://www.haomeiwen.com/subject/mchfyqtx.html