首先,我们应该知道,对于http POST请求来说,它需要使用这个临时目录来存储post数据。 其次,因为该目录是挂在到/tmp目录下的临时文件,那么对于一些OS系统,像centOS将经常删除这个临时目录,所有导致该目录不存在了
解决方案
在springboot项目启动后,系统会在/tmp目录下自动的创建几个目录 tomcat.************.8080,(结尾是项目的端口) tomcat-docbase.*********.8080。
对于Multipart(form-data)的方式处理请求时,默认就是在第二个目录下创建临时文件的。
如何自定义这两个目录: 1、tomcat-docbase.************.8080,(结尾是项目的端后) 对于这个临时文件是项目上传文件的临时目录,配置如下:
修改tomcat启动配置 添加-Djava.io.tmpdir=./tomcat_tmp/
2、tomcat.*********.8080 这个临时文件是设定Tomcat的base 目录,修改application.properties(或者.yml) 下配置:
server.tomcat.basedir=./tomcat_tmp/
原理: 把 tomcat 工作目录指向 jar 的当前目录,这样临时也不会被自动清理. 注意:推荐在启动脚本上,每次启动 jar 服务前,自动删除缓存文件, 类似于启动时自动清理 tomcat 的 work 和 tmp 目录。
启动命令:
nohup java-Djava.io.tmpdir=./tomcat_tmp/ -jar xxx.jar --spring.profiles.active=$server_type --server.tomcat.basedir=./tomcat_tmp/ >> logback.out 2>&1 &
配置好后重启完会生成路径下一个work的文件夹