解決springboot項目上傳文件出現臨時文件目錄為空的問題
最近寫文件上傳到服務器讀取的代碼,前端使用FormData上傳,服務端用MultipartFile接收,自己測試了下MultipartFile對象有什么東西,結果一般屬性都能出來,測試getInputStrea()方法的時候出現了以下錯誤,簡單一看這是什么目錄,從來沒見過?。?/p>

百度一番之后發(fā)現了這是臨時文件存放的路徑,不清楚根據什么去放在這個目錄的,但是這個目錄本機的確沒有,linux系統下好像系統會10天清空一次,翻閱了API底下有這個

百度的時候也發(fā)現另外一個坑,spring配置的MaxInMemorySize配置決定會不會存成臨時文件,超過MaxInMemorySize這個大小,則會生成一個臨時文件在你的localhost文件夾下。小于這個值,則是存在內存中,不生產臨時文件了,所以這個值設置小點,報錯也是FileNotFoundException,注意一下
有網友建議springboot配置tomcat臨時文件目錄,這個方法沒試,我是直接在配置類中加了一個方法,可以參考下:
@Bean
public MultipartConfigElement multipartConfigElement(){
MultipartConfigFactory multipartConfigFactory = new MultipartConfigFactory();
String location = System.getProperty("user.dir") + "/data/tmp";
File file = new File(location);
if(!file.exists()){
file.mkdirs();
}
multipartConfigFactory.setLocation(location);
return multipartConfigFactory.createMultipartConfig();
}
然后debug了下,發(fā)現getInputStream()中的path就是我設置的了:

如果設置了MaxInMemorySize大小,設置了路徑還是不行,可以把MultipartFile設置為File做操作
最后說句,代碼不懂得一定要看API,一下子就豁然開朗了
以上這篇解決springboot項目上傳文件出現臨時文件目錄為空的問題就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
spring?cloud?gateway中netty線程池小優(yōu)化
這篇文章主要介紹了spring?cloud?gateway中netty線程池小優(yōu)化技巧示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-07-07
解決springboot configuration processor對maven子模塊不起作用的問題
這篇文章主要介紹了解決springboot configuration processor對maven子模塊不起作用的問題,本文通過圖文實例代碼給大家講解的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2021-09-09

