The temporary upload location [/
2019-07-28 本文已影响0人
乐观的猴
出现的场景:
项目开发完以后, 就上线投入使用了. 运行了一个多月. 一次用到上传 excel 功能的时候, 突然就不能用了, 打开控制台, 发现后端接口在报500 的错误. 于是就去查看服务端日志. 发现了这个异常.
原因:
使用 java -jar 方式启动 SpringBoot 应用时, 会在 /tmp 目录下生成 tomcat.[随机字符].[port] 的临时文件,
上传到Linux 的文件会先在此目录下生成临时文件, 而linux系统有一个机制, 会在临时目录长时间没有访问的情况下( centos 7 /tmp 默认10天, var/tmp 默认30 天), 自动清理目录下的文件.
可以通过 vi /usr/lib/tmpfiles.d/tmp.conf 命令查看, 如下图:

出现以上问题的本质, 就是因为对应的临时文件被删掉导致的.
解决方法:
- 可以重启应用, 这时候,会重新生成一个新的临时文件, 不过过段时间, 问题还会发生, 不推荐使用.
- 在boot 项目中, 修改tomcat的临时路径 (强烈推荐):
server.tomcat.basedir=/home/temp
从此妈妈再也不用担心文件上传失败了 -- victory