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


exception.jpg


问题:存在文件上传功能的springboot项目,在Linux系统部署之后(使用 java  -jar运行),会在系统的tmp目录生成一个带tomcat及随机字符串的临时目录


如:/tmp/tomcat.7555554548062926924.7995/work/Tomcat/localhost/folder


但是该目录有可能会被linux系统在一定时间后自动清除掉,导致再次上传文件的时候,系统就会报错,如:


Failed to parse multipart servlet request; nested exception is java.io.IOException: The temporary upload location [/tmp/tomcat.7555554548062926924.7995/work/Tomcat/localhost/folder] is not valid"


解决:

可以在项目中增加配置项目,创建配置项类,如

import org.springframework.boot.web.servlet.MultipartConfigFactory;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import javax.servlet.MultipartConfigElement;
@Configuration
public class MultipartConfig {
    @Bean
 MultipartConfigElement multipartConfigElement() {
        MultipartConfigFactory factory = new MultipartConfigFactory();
        factory.setLocation("/data/tmp");
        return factory.createMultipartConfig();
    }
}


部署系统之后,在linux的根目录创建data文件夹,并在该文件夹下创建tmp,创建完成之后

以后每次文件上传,则会暂存以上目录,而不会存放在自动生成的临时目录。


qrcode