一、线上项目运行请求报错
Failed to parse multipart servlet request; nested exception is java.io.IOException: The temporary upload location [/tmp/tomcat.8467881269916233615.8080/work/Tomcat/localhost/ROOT] is not valid;
二、分析原因
1、该异常是如何产生的
是前台页面通过发送一个post请求,导致该异常的。
从上面的异常信息来看,是因为该目录[/tmp/tomcat.8467881269916233615.8080/work/Tomcat/localhost/ROOT] 不存在导致的。
2、该异常为何会产生
2.1、首先,我们应该知道,对于http POST请求来说,它需要使用这个临时目录来存储post数据。
2.2、其次,因为该目录是挂在到/tmp目录下的临时文件,那么对于一些OS系统,像centOS将经常删除这个临时目录,所有导致该目录不存在了
三、解决方案
1、重启项目
这种方法短期有效,但是时间长了,还可能会出现相同的报错,治标不治本,不建议采用
2、在application.yml文件中设置multipart location ,并重启项目
spring:
http:
multipart:
location: /data/upload_tmp
3、在application.yml文件中设置
server
tomcat:
basedir: /data/tmp
4、添加启动参数 -java.tmp.dir=/path/to/application/temp/,并重启
注意:本文归作者所有,未经作者允许,不得转载