Maison  >  Article  >  Java  >  Comment configurer le répertoire de stockage de fichiers temporaires dans Springboot

Comment configurer le répertoire de stockage de fichiers temporaires dans Springboot

WBOY
WBOYavant
2023-05-12 23:01:044042parcourir

Configuration du répertoire de stockage de fichiers temporaires Springboot

Scénario :

La fonction de téléchargement de fichier signale une erreur, puis vérifie le journal.

Journal des erreurs :

L'emplacement de téléchargement temporaire [/tmp/tomcat.7957874575370093230.8088/work/Tomcat/localhost/ROOT] n'est pas valide

Raison :

Dans le système Linux, le service d'application Springboot redémarre (La commande java -jar démarre le service), un répertoire de fichiers tomcat* sera généré dans le répertoire /tmp du système d'exploitation. Les fichiers téléchargés doivent d'abord être convertis en fichiers temporaires et enregistrés dans ce dossier.

Les fichiers du répertoire temporaire /tmp n'étant pas utilisés pendant une longue période (10 jours), ils seront automatiquement supprimés par le mécanisme du système. Par conséquent, si le système n’a pas utilisé le dossier temporaire depuis longtemps, le problème ci-dessus peut survenir.

Solution :

1. Créez un dossier temporaire :

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

Cela peut se reproduire plus tard

2.application.properties reconfigure un répertoire de fichiers, puis redémarrez le projet

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

3.

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

Springboot modifie l'emplacement de stockage des fichiers temporaires

Rapport d'erreurs

Une fois le projet exécuté en ligne pendant un certain temps, l'exception suivante est levée lors du téléchargement de fichiers :

L'emplacement de téléchargement temporaire [/tmp/ tomcat.*.80 /work/Tomcat/localhost/ROOT] n'est pas valide

Après la recherche, la solution suivante a été adoptée [Modifier l'emplacement du fichier temporaire]

Ajouter dans le fichier application.yml

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

Ajouter la classe de configuration dans le projet

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

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer