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();
}
