一、异常描述
springboot项目做了上传文件的功能,开始时上传文件功能正常,但过了若干天后,再上传文件,说某个目录无效,具体异常如下:
java.io.IOException: The temporary upload location [] is not valid
二、异常日志
三、分析原因
1、spring boot的应用服务在启动的时候,会生成在操作系统的/tmp目录下生成一个Tomcat.*的文件目录,用于"java.io.tmpdir"文件流操作TomcatEmbeddedServletContainerFactory;
2、程序对文件的操作时:会生成临时文件,暂存在临时文件中;
3、Linux系统是会自动清理/tmp目录的;
从而导致在若干天后,再上传文件时,报如上的错误。
四、解决方案
1、临时方案
重启服务,可立即解决问题,但过段时间还会重现该异常。
2、永久方案:修改项目的临时目录路径
jvm在启动时增加参数-Djava.io.tmpdir=自定义目录(需要确保该目录不被随便删除)