SpringBoot 通過網關Zuul進行附件上傳的時候,有時會出現如下錯誤
[Request processing failed; nested exception is org.springframework.web.multipart.MultipartException: Could not parse multipart servlet request; nested exception is java.io .IOException: The temporary upload location [/tmp/tomcat.3814974221022613431.8080/work/Tomcat/localhost/ROOT] is not valid] with root causejava.io .IOException: The temporary upload location [/tmp/tomcat.3814974221022613431.8080/work/Tomcat/localhost/ROOT] is not valid
錯誤產生的原因:
1.spring boot的應用服務在啓動的時候,會生成在操作系統的/tmp目錄下生成一個Tomcat.*的文件目錄,用於"java.io.tmpdir"文件流操作
TomcatEmbeddedServletContainerFactory
2.程序對文件的操作時:會生成臨時文件,暫存在臨時文件中;長時間不操作,導致/tmp下面的tomcat臨時文件目錄被刪除,
且刪除的文件不可恢復,上傳文件時獲取不到文件目錄,報錯
解決方式有以下幾點:
1、重啓服務;
2、網關是否引入spring-boot-starter-web依賴,若無,則將其引入;
3、設置spring.servlet.multipart.enabled:true
4、修改上傳文件默認的BaseDir