文件上传失败: java.io.IOException: The temporary upload location [...] is not valid
作者:mmseoamin日期:2024-02-28

 

异常信息

Could not parse multipart servlet request; nested exception is java.io.IOException: The temporary upload location [/tmp/tomcat.7215026991249819883.8087/work/Tomcat/localhost/ROOT] is not valid

org.springframework.web.multipart.MultipartException: Could not parse multipart servlet request; nested exception is java.io.IOException: The temporary upload location [/tmp/tomcat.7215026991249819883.8087/work/Tomcat/localhost/ROOT] is not valid

 异常原因

临时目录不存在,可能原因系统运行久了,临时文件目录被系统自动清除了

解决方案

1、临时解决方案(快速解决,不推荐)

重启服务,重启后被删除的tomcat目录会重新生成

2、添加启动配置项

启动时增加参数-Djava.io.tmpdir=自定义目录

3、添加文件配置类

@Bean
MultipartConfigElement multipartConfigElement() {
    MultipartConfigFactory factory = new MultipartConfigFactory();
    //临时文件地址
    factory.setLocation("/var/tmp");
    return factory.createMultipartConfig();
}

4、修改tmpwatch 删除文件的逻辑(需要修改系统,不推荐)

tmpwatch 删除文件的逻辑

5、修改application.yml配置文件(推荐)

设置文件临时存储路径

spring.http.multipart.location = /var/tmp

6、设定Tomcat的base 目录,如果没有指定则使用临时目录

server.tomcat.basedir=e:/tmp