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