Failed to parse multipart servlet request; nested exception is java.io.IOException: The temporary upload location...

code小生 1年前 ⋅ 2743 阅读

一、线上项目运行请求报错

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/,并重启

 

 


全部评论: 0

    我有话说: