ホームページ  >  記事  >  Java  >  Springbootで一時ファイルの保存ディレクトリを構成する方法

Springbootで一時ファイルの保存ディレクトリを構成する方法

WBOY
WBOY転載
2023-05-12 23:01:044042ブラウズ

springboot 一時ファイル格納ディレクトリの構成

シナリオ:

ファイルアップロード機能でエラーが報告され、ログを確認してください。

エラー ログ:

一時アップロード場所 [/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();
    }

Springbootは一時ファイルの保存場所を変更します

エラー報告

プロジェクトが一定期間オンラインで実行されている場合、ファイルのアップロード時に次の例外がスローされます:

一時アップロード場所 [/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 サイトの他の関連記事を参照してください。

声明:
この記事はyisu.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。