一、错误提示:spingboot项目在上传文件时报错:
Failed to parse multipart servlet request; nested exception is java.io.IOException: The temporary upload location [/tmp/tomcat.9174520707846674885.9991/work/Tomcat/localhost/ROOT] is not valid"
二、原因:
是因为系统长时间没人使用,tomcat临时目录被系统删除导致找不到目录
三、解决方案:
1、重启项目,自动生成新的临时文件目录(此方案只能临时解决问题,个人不推荐)
2、application.yml中进行如下配置(我本人使用此方式解决问题):
#指定上传文件临时路径
tomcat:
basedir: /opt/temp/tomcat
3、java config方式:
//1.该处也需要配置下
@SpringBootApplication(exclude = {MultipartAutoConfiguration.class})
public class TestApplication {
public static void main(String[] args) {
SpringApplication.run(TestApplication .class, args);
}
/**
* 解决文件上传,临时文件夹被程序自动删除问题
*
* 文件上传时自定义临时路径
* @return
*/
@Bean
MultipartConfigElement multipartConfigElement() {
MultipartConfigFactory factory = new MultipartConfigFactory();
//2.该处就是指定的路径(需要提前创建好目录,否则上传时会抛出异常)
factory.setLocation("/data/uploadtmp");
return factory.createMultipartConfig();
}
}