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
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.
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(); }
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的系统相关位置
@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!