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

WBOY
リリース: 2023-05-12 23:01:04
転載
4050 人が閲覧しました

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 までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート