日常问题:上传接口报错
日常問題:上傳接口報錯
項目啟動后,一段時間沒怎么用之后,系統所有上傳接口都失敗,報錯為接口異常。
這個問題通常不會出現的,因為正常情況下使用,不可能會有7天不進行文件上傳操作的。
因為財務上傳報表是每個工作日的啊 ╮(╯_╰)╭
結果碰到了國慶春節長假,還有今年疫情的超級長假。然后就炸了 ε=(′ο`*)))唉
問題
Springboot上傳文件錯誤:org.springframework.web.multipart.MultipartException .... org.springframework.web.multipart.MultipartException: Failed to parse multipart servlet request; nested exception is java.io.IOException: The temporary upload location [/tmp/tomcat.8514542127953693245.8091/work/Tomcat/localhost/ROOT] is not valid ....原因
linux系統會定期(10天)清除tmp目錄下沒有使用過的文件,springBoot啟動的時候會在/tmp目錄下生成一個tomcat.****.port(tomcat.8514542127953693245.8091)的文件目錄,此目錄要是清除后,就是出現上傳文件錯誤!
具體清除腳本詳情:
從/var/log/cron 日志中發現,服務器除了調用用戶的計劃任務外,還會執行系統自己的.
進入 /etc/cron.daily , 可以看到一個tmpwatch
里面調用了/usr/sbin/tmpwatch 腳本 參數為240 =10*24 =10天
解決
第一種臨時方法,萬能的重啟。臨時文件會重新生成。
第二種方法,重啟,并且調整系統清理的時長,把上文原因中提到的腳本時間延長到100+天。【要是幾百天都不用的系統,也就不用維護啦 罒ω罒】
第三種方法,項目配置Bean,提供臨時文件目錄
@Beanpublic MultipartConfigElement multipartConfigElement() {MultipartConfigFactory factory = new MultipartConfigFactory();//單個文件最大factory.setMaxFileSize("10240KB");/// 設置總上傳數據總大小factory.setMaxRequestSize("102400KB");// 這種寫法在linux下是沒問題的,但是開發windows上會找不到目錄// factory.setLocation("/var/tmp");// 由于默認/tmp 臨時目錄下 Linux 會清理7天無操作目錄,所以換個上傳目錄試試String location = System.getProperty("user.home") + "/data/tmp";File tmpFile = new File(location);if (!tmpFile.exists()) {tmpFile.mkdirs();}factory.setLocation(location);return factory.createMultipartConfig();}參考文檔
就這個了,很詳細的:https://blog.csdn.net/liuxiaoming1109/article/details/93467180
這個是linux下文件自動刪除的文章:https://www.tuicool.com/articles/6Jj6rq
小杭 2020-02-19 (:з」∠)
總結
以上是生活随笔為你收集整理的日常问题:上传接口报错的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 2017博鳌新型城镇化发展大会,机智云斩
- 下一篇: sqlite developer过期解决