spring boot 上传文件出错

文件上传 同时被 2 个专栏收录
1 篇文章 0 订阅
3 篇文章 0 订阅

问题:之前出现过几次,就是过一段时间文件上传就报错,spring boot 上传文件出错:java.io.IOException: The temporary upload location。
link 这个的帖子解决了这个问题。

1.spring boot的应用服务在启动的时候,会生成在操作系统的/tmp目录下生成一个Tomcat.*的文件目录,用于"java.io.tmpdir"文件流操作

TomcatEmbeddedServletContainerFactory

2.程序对文件的操作时:会生成临时文件,暂存在临时文件中;

lunix 系统的tmpwatch 命令会删除10天未使用的临时文件;

长时间不操作,导致/tmp下面的tomcat临时文件目录被删除,且删除的文件不可恢复,上传文件时获取不到文件目录,报错

解决方案
1.重启服务,临时方案:会重新生成tomcat目录,但是生产环境不建议如此操作;

2.1增加服务配置,自定义baseDir:

2.2启动时增加参数-Djava.io.tmpdir=自定义目录

3.修改tmpwatch 删除文件的逻辑,系统级别的命令,不建议操作

4.在网上看到有:编码的方式catch异常,生成删除的文件夹;(方法未验证)

本次采用的方案二 直接在启动脚本里配置-Djava.io.tmpdir=/mci/tmp/
每次启动都会多生成2个文件,就在每次启动的时候增加一个判断,把前面生成的tomcat打头的文件清除掉,这样就不会产生太多无用的垃圾文件了

下面是部分启动脚本代码

if [ ! -d "/mci/tmp" ];
then
  mkdir /mci/tmp
else
  echo "文件夹已存在"
  rm -rf /mci/tmp/tomcat*
fi
nohup java -Dproc.key=dev_iasp -Djava.io.tmpdir=/mci/tmp/ -jar /mci/iaspapp/iaspservice/iaspservice-1.0-SNAPSHOT.jar >/dev/null 2>&1 &
  • 0
    点赞
  • 0
    评论
  • 0
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

©️2021 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值