解決Spring Boot應(yīng)用上傳文件時(shí)報(bào)錯(cuò)“spring.servlet.multipart.location”的方法?相信很多沒有經(jīng)驗(yàn)的人對此束手無策,為此本文總結(jié)了問題出現(xiàn)的原因和解決方法,通過這篇文章希望你能解決這個(gè)問題。
專注于為中小企業(yè)提供成都網(wǎng)站設(shè)計(jì)、網(wǎng)站建設(shè)服務(wù),電腦端+手機(jī)端+微信端的三站合一,更高效的管理,為中小企業(yè)槐蔭免費(fèi)做網(wǎng)站提供優(yōu)質(zhì)的服務(wù)。我們立足成都,凝聚了一批互聯(lián)網(wǎng)行業(yè)人才,有力地推動(dòng)了1000多家企業(yè)的穩(wěn)健成長,幫助中小企業(yè)通過網(wǎng)站建設(shè)實(shí)現(xiàn)規(guī)模擴(kuò)充和轉(zhuǎn)變。
解決辦法
(1)通過Spring Boot的配置參數(shù)“spring.servlet.multipart.location”明確指定上傳文件的臨時(shí)目錄,確保該路徑已經(jīng)存在,而且該目錄不會(huì)被操作系統(tǒng)清除。
spring.servlet.multipart.location=/data/tmp
將上傳文件的臨時(shí)目錄指定到路徑“/data/tmp”下。
實(shí)際上,在Spring Boot中關(guān)于上傳文件的所有配置參數(shù)如下所示:
# MULTIPART (MultipartProperties) spring.servlet.multipart.enabled=true # Whether to enable support of multipart uploads. spring.servlet.multipart.file-size-threshold=0B # Threshold after which files are written to disk. spring.servlet.multipart.location= # Intermediate location of uploaded files. spring.servlet.multipart.max-file-size=1MB # Max file size. spring.servlet.multipart.max-request-size=10MB # Max request size. spring.servlet.multipart.resolve-lazily=false # Whether to resolve the multipart request lazily at the time of file or parameter access.
(2)在Spring容器中明確注冊MultipartConfigElement對象,通過MultipartConfigFactory指定一個(gè)路徑。
在上述源碼追蹤中就發(fā)現(xiàn),Tomcat會(huì)使用MultipartConfigElement對象的location屬性作為上傳文件的臨時(shí)目錄。
/** * 配置上傳文件臨時(shí)目錄 * @return */@Beanpublic MultipartConfigElement multipartConfigElement() { MultipartConfigFactory factory = new MultipartConfigFactory(); // tmp.dir參數(shù)在啟動(dòng)腳本中設(shè)置 String path = System.getProperty("tmp.dir"); if(path == null || "".equals(path.trim())) { path = System.getProperty("user.dir"); } String location = path + "/tmp"; File tmpFile = new File(location); // 如果臨時(shí)目錄不存在則創(chuàng)建 if (!tmpFile.exists()) { tmpFile.mkdirs(); } // 明確指定上傳文件的臨時(shí)目錄 factory.setLocation(location); return factory.createMultipartConfig(); }
看完上述內(nèi)容,你們掌握解決Spring Boot應(yīng)用上傳文件時(shí)報(bào)錯(cuò)“spring.servlet.multipart.location”的方法的方法了嗎?如果還想學(xué)到更多技能或想了解更多相關(guān)內(nèi)容,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝各位的閱讀!