1.上传附加时报错找不到临时目录

Failed to parse multipart servlet request; nested exception is java.io.IOException: The temporary upload location [/tmp/tomcat/work/Tomcat/localhost/ROOT] is not valid
发生改报错原因为

(1)、SpringBoot项目启动后,系统默认会在 /tmp 目录下自动创建如下三个目录

 hsperfdata_root,
 tomcat.************.8080,(结尾是项目的端后)
 tomcat-docbase.*********.8080
(2)、Multipart(form-data)的方式处理请求时,默认就是在第二个目录下创建临时文件的

(3)、CentOS7 定时清理临时文件目录

/tmp目录的清理规则主要取决于/usr/lib/tmpfiles.d/tmp.conf文件的设定

#Clear tmp directories separately, to make them easier to override
v /tmp 1777 root root 10d           #   清理/tmp下10天前的目录和文件
v /var/tmp 1777 root root 30d       #   清理/var/tmp下30天前的目录和文件

依据以上几条情况,可以看得出我们上传文件的临时目录,在CentOS7之中,会每10天进行定时清理掉。于是就出现了文章开始出所说的出现上传文件的临时目录不存在,于是上传问题报错500的问题啦。
知道问题了,那解决方案就是上传指定临时目录,不放默认的/tmp/tomcat目录即可

2.两种解决方案

2.1 启动脚本指定:
DIR=/home/application
JAVATEMPDIR=${DIR}/temp

nohup java -jar application-1.0.0-1.jar -Xms10m -Xmx100m  --server.port=9820 -java.tmp.dir=$JAVATEMPDIR 2>1&

在这里插入图片描述

2.2 在SpringBoot的配置之中设定Profile信息

在propertites/yaml文件中配置: spring.http.multipart.location= 你的缓存文件路径

spring.mvc.static-path-pattern=/upload/**
spring.http.multipart.max-file-size=10MB
#指定上传文件临时目录
spring.http.multipart.location=/opt/data/upload

参考:
spring boot上传文件错误The temporary upload location /tmp/tomcat.******/work/Tomcat/localhost/ROOT] is not valid

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐