シナリオ:
ファイルアップロード機能でエラーが報告され、ログを確認してください。
エラー ログ:
一時アップロード場所 [/tmp/tomcat.7957874575370093230.8088/work/Tomcat/localhost/ROOT] が無効です
Linux システムでは、springboot アプリケーション サービスが再起動される (java -jar コマンドがサービスを開始する) と、tomcat* ファイルが /tmp ディレクトリに生成されます。オペレーティング システムのディレクトリにある場合、アップロードされたファイルはまず一時ファイルに変換され、このフォルダーに保存される必要があります。
一時 /tmp ディレクトリ内のファイルは長期間 (10 日間) 使用されないため、システムのメカニズムによって自動的に削除されます。したがって、システムが一時フォルダーを長期間使用しなかった場合、上記の問題が発生する可能性があります。
1. 一時フォルダーを作成します:
mkdir -p /tmp/tomcat.7957874575370093230.8088/work/Tomcat/localhost/ROOT
これは後で再び発生する可能性があります
2. application.properties ファイル ディレクトリを再構成します。プロジェクトを再起動します
# 存放Tomcat的日志、Dump等文件的临时文件夹,默认为系统的tmp文件夹 server.tomcat.basedir=/data/apps/temp
3. 構成クラス構成の一時ファイルの保存ディレクトリ
@Bean MultipartConfigElement multipartConfigElement() { MultipartConfigFactory factory = new MultipartConfigFactory(); factory.setLocation(tmepPath); return factory.createMultipartConfig(); }
プロジェクトが一定期間オンラインで実行されている場合、ファイルのアップロード時に次の例外がスローされます:
一時アップロード場所 [/tmp/tomcat.*.80/work/Tomcat/localhost/] ROOT] は有効ではありません
検索後、次の解決策が採用されました [一時ファイルの場所を変更]
application.yml ファイルに追加
location: tempDir: /opt/location/tempDir #此处为*unix的系统相关位置
@Configuration public class MultipartConfig { @Value("${location.tempDir:/opt/tempDir}") private String tempDir; @Bean MultipartConfigElement multipartConfigElement() { MultipartConfigFactory factory = new MultipartConfigFactory(); File tmpDirFile = new File(tempDir); // 判断文件夹是否存在 if (!tmpDirFile.exists()) { tmpDirFile.mkdirs(); } factory.setLocation(tempDir); return factory.createMultipartConfig(); } }
以上がSpringbootで一時ファイルの保存ディレクトリを構成する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。