Linux springboot上傳文件報錯:java.nio.file.NoSuchFileException


項目場景:

Linux springboot上傳文件報錯:java.nio.file.NoSuchFileException: /tmp/undertowXXXXXX


問題描述:

系統使用頻率較低,用戶上傳附件時提示報錯:java.nio.file.NoSuchFileException: /tmp/undertow*****


原因分析:

查閱資料找到問題原因:

在 Linux 系統中,Spring Boot 應用以 java -jar 命令啟動時,會在操作系統的 /tmp 目錄下生成一個 tomcat(或 undertow )臨時目錄,上傳的文件先要轉換成臨時文件保存在這個文件夾下面。由於臨時 /tmp 目錄下的文件,在長時間(10天)沒有使用的情況下,系統執行了 tmp 目錄清理服務(systemd-tmpfiles-clean.service),導致 /tmp/undertow...8090 文件被清理,然而在上傳的時候,undertow 服務器需要創建/tmp/undertow...8090/undertow...upload 臨時文件,但是調用 Files.createFile(...) 的時候就會發現找不到父目錄,才導致了以上的錯誤。


解決方案:

在 applicaiton.yml(applicaiton.property) 中添加配置 :

spring:

    servlet:

        multipart:

            location: /data/tmp

手動指定目錄后,必須保證該目錄存在,並有讀寫的權限,創建該目錄 mkdir -p /data/tmp


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM