Heim  >  Artikel  >  Java  >  So konfigurieren Sie das temporäre Dateispeicherverzeichnis in Springboot

So konfigurieren Sie das temporäre Dateispeicherverzeichnis in Springboot

WBOY
WBOYnach vorne
2023-05-12 23:01:044042Durchsuche

Konfiguration des temporären Dateispeicherverzeichnisses von Springboot

Szenario:

Die Funktion zum Hochladen von Dateien meldet einen Fehler und überprüft dann das Protokoll.

Fehlerprotokoll:

Der temporäre Upload-Speicherort [/tmp/tomcat.7957874575370093230.8088/work/Tomcat/localhost/ROOT] ist ungültig

Grund:

Im Linux-System die Springboot Der Dienst wird neu gestartet (Der Befehl java -jar startet den Dienst), ein Tomcat*-Dateiverzeichnis wird im Verzeichnis /tmp des Betriebssystems generiert. Die hochgeladenen Dateien müssen zunächst in temporäre Dateien konvertiert und in diesem Ordner gespeichert werden.

Da die Dateien im temporären /tmp-Verzeichnis längere Zeit (10 Tage) nicht verwendet werden, werden sie durch den Systemmechanismus automatisch gelöscht. Wenn das System den temporären Ordner längere Zeit nicht verwendet hat, kann es daher zu dem oben genannten Problem kommen.

Lösung:

1. Erstellen Sie einen temporären Ordner:

mkdir -p /tmp/tomcat.7957874575370093230.8088/work/Tomcat/localhost/ROOT

Dies kann später noch einmal passieren

2.application.properties konfiguriert ein Dateiverzeichnis neu und startet dann das Projekt neu

# 存放Tomcat的日志、Dump等文件的临时文件夹,默认为系统的tmp文件夹
server.tomcat.basedir=/data/apps/temp

3

@Bean
    MultipartConfigElement multipartConfigElement() {
        MultipartConfigFactory factory = new MultipartConfigFactory();
        factory.setLocation(tmepPath);
        return factory.createMultipartConfig();
    }

Springboot ändert den Speicherort temporärer Dateien

Fehlerberichterstattung

Nachdem das Projekt eine Zeit lang online ausgeführt wurde, wird beim Hochladen von Dateien die folgende Ausnahme ausgelöst:

Der temporäre Upload-Speicherort [/tmp/ tomcat.*.80 /work/Tomcat/localhost/ROOT] ist nicht gültig

Nach der Suche wurde die folgende Lösung übernommen [Ändern Sie den Speicherort der temporären Datei]

In der application.yml-Datei hinzufügen

location:
  tempDir: /opt/location/tempDir #此处为*unix的系统相关位置

Hinzufügen die Konfigurationsklasse zum Projekt

@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();
   }
}

Das obige ist der detaillierte Inhalt vonSo konfigurieren Sie das temporäre Dateispeicherverzeichnis in Springboot. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:yisu.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen