SpringBoot上傳文件臨時失效問題
阿新 • • 發佈:2018-08-28
ava emp clas actor 出現 factory bsp bean pri
線上的系統中不能上傳文件了,出現如下錯誤:
org.springframework.web.multipart.MultipartException: Could not parse multipart servlet request;nested exception is java.io.IOException: The temporary upload location [/tmp/tomcat.1337767218595042057.80/work/Tomcat/localhost/ROOT] is not valid org.springframework.web.multipart.support.StandardMultipartHttpServletRequest.parseRequest(StandardMultipartHttpServletRequest.java:112) org.springframework.web.multipart.support.StandardMultipartHttpServletRequest.
原因:
在linux
系統中,springboot
應用服務再啟動(java -jar
命令啟動服務)的時候,會在操作系統的/tmp
目錄下生成一個tomcat*
的文件目錄,上傳的文件先要轉換成臨時文件保存在這個文件夾下面。由於臨時/tmp
目錄下的文件,在長時間(10天)沒有使用的情況下,就會被系統機制自動刪除掉。所以如果系統長時間無人問津的話,就可能導致上面這個問題。
解決辦法:
@Bean
public MultipartConfigElement multipartConfigElement() {
MultipartConfigFactory factory = new MultipartConfigFactory();
factory.setLocation("/data/app/temp");
// 文件最大
factory.setMaxFileSize("10240KB"); // KB,MB
// / 設置總上傳數據總大小
factory.setMaxRequestSize("102400KB");
return factory.createMultipartConfig();
}
手動的將臨時文件夾設置為自定義的文件夾,就不會被Linux刪除了。
ps:在windows系統
中可以生效,系統會自動生成/data/apps/temp
這一路徑,但是在Linux系統
中不會生成/data/apps/temp
路徑
SpringBoot上傳文件臨時失效問題