Could not parse multipart servlet request; nested exception is java.io.IOException: The temporary up
Could not parse multipart servlet request; nested exception is java.io.IOException: The temporary upload location [/tmp/tomcat.2787723636027878371.8082/work/Tomcat/localhost/taslyb2bbms] is not valid"
问题描述:spring boot 通过MultipartFile上传文件,两台电脑客户端,今天客户端A可以正常传文件,而B无法传文件,明天客户端A则无法正常传文件,而B可以。
结果:看错误是因为无临时目录导致上传文件失败,临时文件不存在是因为linux自动清理10天未操作的临时文件目录,而两个客户端时而可以时而不可以的问题是因为,采用了两台服务器的负载均衡,一台服务器由于10天未被分配到访问导致临时目录被清理,而另一台则收到访问临时目录未被清理,所以当无论哪台客户端被分配访问未被清理临时目录的服务器时都可以正常上传文件,而另一台则无法正常上传文件
解决办法有三种:
1 重启项目,系统会自动重新生成该目录
2 手动创建该目录
3 在代码中增加系统默认目录配置 ,如下:
@Bean
MultipartConfigElement multipartConfigElement() {
MultipartConfigFactory factory = new MultipartConfigFactory();
factory.setLocation("/app/tmp");
return factory.createMultipartConfig();
}
梅花香自古寒来