springboot臨時文件存儲目錄配置方式
springboot臨時文件存儲目錄配置
場景:
上傳文件功能報錯,然后排查日志。
報錯日志:
The temporary upload location [/tmp/tomcat.7957874575370093230.8088/work/Tomcat/localhost/ROOT] is not valid
原因:
在linux系統(tǒng)中,springboot應(yīng)用服務(wù)再啟動(java -jar 命令啟動服務(wù))的時候,會在操作系統(tǒng)的/tmp目錄下生成一個tomcat*的文件目錄,上傳的文件先要轉(zhuǎn)換成臨時文件保存在這個文件夾下面。
由于臨時/tmp目錄下的文件,在長時間(10天)沒有使用的情況下,就會被系統(tǒng)機(jī)制自動刪除掉。所以如果系統(tǒng)長時間沒有使用到臨時文件夾,就可能導(dǎo)致上面這個問題。
解決辦法:
1.創(chuàng)建臨時文件夾:
mkdir -p /tmp/tomcat.7957874575370093230.8088/work/Tomcat/localhost/ROOT
后面可能還會出現(xiàn)這種情況
2.application.properties重新配置一個文件目錄,然后重啟項目
# 存放Tomcat的日志、Dump等文件的臨時文件夾,默認(rèn)為系統(tǒng)的tmp文件夾 server.tomcat.basedir=/data/apps/temp
3.配置類配置臨時文件存儲目錄
@Bean
MultipartConfigElement multipartConfigElement() {
MultipartConfigFactory factory = new MultipartConfigFactory();
factory.setLocation(tmepPath);
return factory.createMultipartConfig();
}
Springboot修改臨時文件的存儲位置
報錯
項目在線運(yùn)行了一段時間后,上傳文件時拋出如下異常:
The temporary upload location [/tmp/tomcat.*.80/work/Tomcat/localhost/ROOT] is not valid
經(jīng)過查找,采用了如下的解決方式【修改臨時文件的位置】
在application.yml 文件中添加
location: tempDir: /opt/location/tempDir #此處為*unix的系統(tǒng)相關(guān)位置
項目中添加配置類
@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();
}
}
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
spring aop實現(xiàn)用戶權(quán)限管理的示例
本篇文章主要介紹了spring aop實現(xiàn)用戶權(quán)限管理的示例,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-12-12
Spring?Boot集成Milvus快速入門demo示例詳解
Milvus是一種高性能向量數(shù)據(jù)庫,支持從筆記本到大型分布式系統(tǒng)的多環(huán)境運(yùn)行,它以開源和云服務(wù)形式提供,是LFAI & Data Foundation的項目,采用Apache 2.0許可,Milvus特別支持高并行化和解耦的系統(tǒng)架構(gòu),使其能夠隨數(shù)據(jù)增長而擴(kuò)展,支持各種復(fù)雜搜索功能,滿足企業(yè)級AI應(yīng)用需求2024-09-09
在Ubuntu上部署SpringBoot應(yīng)用的操作步驟
隨著云計算和容器化技術(shù)的普及,Linux 服務(wù)器已成為部署 Web 應(yīng)用程序的主流平臺之一,Java 作為一種跨平臺的編程語言,具有廣泛的應(yīng)用場景,本文將詳細(xì)介紹如何在 Ubuntu 服務(wù)器上部署 Java 應(yīng)用,需要的朋友可以參考下2025-01-01
MybatisPlus分頁查詢與多條件查詢介紹及查詢過程中空值問題的解決
mybatisplus是個很好用的插件,相信小伙伴們都知道,下面這篇文章主要給大家介紹了關(guān)于mybatis-plus實現(xiàn)分頁查詢與多條件查詢介紹及查詢過程中空值問題的相關(guān)資料,需要的朋友可以參考下2022-10-10
Java中的SynchronousQueue阻塞隊列及使用場景解析
這篇文章主要介紹了Java中的SynchronousQueue阻塞隊列及使用場景解析,SynchronousQueue 是 Java 中的一個特殊的阻塞隊列,它的主要特點是它的容量為0,這意味著 SynchronousQueue不會存儲任何元素,需要的朋友可以參考下2023-12-12
使用Java Collections實現(xiàn)集合排序的全面指南
在Java編程中,集合(Collection)是處理數(shù)據(jù)的重要工具之一,Java集合框架提供了豐富的接口和類來操作數(shù)據(jù)集合,而排序是其中最常見的操作之一,本文將詳細(xì)介紹如何使用Collections類對集合進(jìn)行排序,并深入探討其背后的原理和使用場景,需要的朋友可以參考下2025-02-02

