java臨時目錄找不到問題分析及解決過程
java臨時目錄找不到問題解決
報錯示例
org.springframework.web.multipart.MultipartException: Could not parse multipart servlet
request;nested exception is java.io.IOException: The temporary upload location
[/tmp/tomcat.1337767218595042057.80/work/Tomcat/localhost/ROOT] is not valid
org.springframework.web.multipart.support.StandardMultipartHttpServletRequest.parseRequest(StandardMultipart
HttpServletRequest.java:112) org.springframework.web.multipart.support.StandardMultipartHttpServletRequest.
報錯原因
java項目啟動時,會在系統(tǒng)中創(chuàng)建一個臨時目錄,
- 在windows中為
C:\Users\用戶名\AppData\Local\Temp\
- 在linux中為
/tmp
此目錄,在未使用10天后將被系統(tǒng)刪除(如10天內(nèi)沒有任何文件上傳)
文件上傳過程中,所有文件會臨時保存在此目錄中,當(dāng)需要處理時會從此目錄中讀取
若此文件夾或文件不存在會報以上錯誤,一般將項目關(guān)閉重新啟動即可解決,但是只是臨時解決,在此給出兩個解決方案:
注意:兩方案二選一,全部選擇有可能導(dǎo)致系統(tǒng)無法啟動
方案一:
一般用于接觸不到服務(wù)器或?qū)inux命令不熟悉的開發(fā)者
首先在yml配置文件中添加multipart.location目錄地址:
spring:
servlet:
multipart:
# 指定自定義上傳目錄
location: /mnt/tmp
然后添加config配置文件:
@Configuration
public class MultipartConfig {
@Value("${spring.servlet.multipart.location}")
private String fileTempDir;
@Bean
MultipartConfigElement multipartConfigElement() {
String os = System.getProperty("os.name");
// 兼容windows
if(os.toLowerCase().startsWith("win")){
fileTempDir = "C:" + fileTempDir;
}
log.info("fileTempDir:{}", fileTempDir);
MultipartConfigFactory factory = new MultipartConfigFactory();
File tmpDirFile = new File(fileTempDir);
// 判斷文件夾是否存在
if (!tmpDirFile.exists()) {
//創(chuàng)建文件夾
boolean mkdirSuccess = tmpDirFile.mkdirs();
log.info("create temp dir,result:{}", mkdirSuccess);
}
factory.setLocation(fileTempDir);
return factory.createMultipartConfig();
}
}
配置測試:
在項目啟動日志中尋找:
com.xx.config.MultipartConfig - fileTempDir:C:/mnt/tmp
代表配置成功
方案二:
在項目啟動腳本或啟動命令中加入以下命令
-Djava.io.tmpdir=/mnt/temp
總結(jié)
1.切記兩方案選其一
2.以上方案實行后,可查看設(shè)定的目錄是否自動創(chuàng)建成功,若目錄找不到或不存在,可詳細檢查配置信息,確保項目信息無誤可手動創(chuàng)建目錄
3.兩者原理相同,都是配置了文件的臨時存儲目錄,此目錄和其他系統(tǒng)目錄一致,屬于用戶自己控制,不會因特殊原因被系統(tǒng)刪除,此乃長久之計
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
java將String字符串轉(zhuǎn)換為List<Long>類型實例方法
在本篇文章里小編給大家整理的是關(guān)于java將String字符串轉(zhuǎn)換為List<Long>類型實例方法,需要的朋友們可以參考下。2020-03-03
解決idea中svn提交時performing vcs refresh時間很長的問題
這篇文章主要介紹了解決idea中svn提交時performing vcs refresh時間很長的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-09-09
java中SimpleDateFormat 的多線程安全問題
本文主要介紹了java中SimpleDateFormat 的多線程安全問題,包括其內(nèi)部可變狀態(tài)和競爭條件,文章提供了四種解決方案,下面就來詳細的介紹一下2026-02-02
Spring MVC+FastJson+hibernate-validator整合的完整實例教程
這篇文章主要給大家介紹了關(guān)于Spring MVC+FastJson+hibernate-validator整合的完整實例教程,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。2018-04-04
springboot 在idea中實現(xiàn)熱部署的方法
這篇文章主要介紹了springboot 在idea中實現(xiàn)熱部署的方法,實現(xiàn)了熱部署,在每一次作了修改之后,都會自動的重啟,非常節(jié)約時間,感興趣的小伙伴們可以參考一下2018-10-10

