C:\Users\xx\.xxxxxx\system\tomcat\xxx\work\Catalina\localhost\ROOT(系统找不到指定文件)
編寫SMM項目,上傳zip文件報錯
代碼在執行到 此處時
ZipInputStream zipInputStream = new ZipInputStream(new FileInputStream(file))上傳文件報錯
報錯內容:C:\Users\用戶\\.IntelliJIdea2017.1\system\tomcat\項目名稱\work\Catalina\localhost\ROOT\upload_d80c742e_a6ec_432a_b644_bd403f2938c6_00000000.tmp (系統找不到指定的文件。)
項目用的是SSM框架,是用來整合activiti的項目,采用zip上傳文件的形式部署流程。 一開始是以為自己的配置文件有錯,后來看了半天也沒看出來。
感覺沒啥錯誤呀,網上查看半天也沒啥結論,后來偶爾測試一下發現其他的文件上傳卻是沒啥問題,此時就感覺到頭疼了。
經過查找發現這個目錄C:\Users\用戶\.IntelliJIdea2017.1\system\tomcat\項目名稱\work\Catalina\localhost\ROOT\
這個目錄是用來存儲臨時文件的目錄,每次tomcat重啟都會將此目錄刪除重建。
每當有文件上傳的時候,系統就會去到這么一個目錄中找尋一個臨時文件然后再讀取該臨時文件,找不到就會報錯
然后就發現其他文件都能上傳,只有activiti的zip這個文件上傳不了
為什么只有這個zip文件不會創建臨時文件?難道是因為格式的問題?這個想法思索了很久,找了很多博客也沒有一個解決方案,最后再一個巧合的情況下突然發現,springMVC在配置上傳文件的配置文件中缺少了一個參數
maxInMemorySize 這個參數指的是文件的大小,如果超過這個限制就會在臨時目錄下創建臨時文件,而如果小于這個值,文件則直接在留在內存中,然后我突然明白了,我的那個zip文件是7kb應該是小于了默認值,所以才不會去創建這么一個臨時文件,但是當代碼執行到此處時
還是會去臨時工作目錄中找臨時文件,發現找不到,于是就報這個錯誤。
C:\Users\用戶\\.IntelliJIdea2017.1\system\tomcat\項目名稱\work\Catalina\localhost\ROOT\upload_d80c742e_a6ec_432a_b644_bd403f2938c6_00000000.tmp (系統找不到指定的文件。)
所以當設置好這個參數后 ,就能上傳成功了。但是注意,0KB 的文件是依然上傳不成功的除非是1KB 的文件
uploadTempDir 這個參數可以修改緩存文件的地址,不賦值的話就默認為上面那一大長串的地址,賦值之后則可以自己控制了,一般還是自己控制的比較好,因為如果項目啟動時間很長,幾天之后這個目錄就會被自動回收掉,然后就會上傳報錯。
還有這個 temp 文件夾是在webapp 目錄下的
總結
以上是生活随笔為你收集整理的C:\Users\xx\.xxxxxx\system\tomcat\xxx\work\Catalina\localhost\ROOT(系统找不到指定文件)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 如何停止运行在服务器的项目,怎么启动和停
- 下一篇: 【循序渐进学Python】6.Pytho