使用DiskFileItemFactory 实现文件上传 ,设定缓冲区大小和存放临时文件目录。
https://www.cnblogs.com/xiaonanhai/p/5943724.html
DiskFileItemFactory有兩個方法 :setSizeThreshold和.setRepository
1. setRepository方法用于設(shè)置當(dāng)上傳文件尺寸大于setSizeThreshold方法設(shè)置的臨界值時,將文件以臨時文件形式保存在磁盤上的存放目錄。有一個對應(yīng)的獲得臨時文件夾的 File getRespository() 方法。
? ? ? ?注意:當(dāng)從沒有調(diào)用此方法設(shè)置臨時文件存儲目錄時,默認(rèn)采用系統(tǒng)默認(rèn)的臨時文件路徑,可以通過系統(tǒng)屬性 java.io.tmpdir 獲取。如下代碼:
System.getProperty("java.io.tmpdir");
Tomcat系統(tǒng)默認(rèn)臨時目錄為“<tomcat安裝目錄>/temp/”。
附:
? setSizeThreshold方法說明:
?
Apache文件上傳組件在解析上傳數(shù)據(jù)中的每個字段內(nèi)容時,需要臨時保存解析出的數(shù)據(jù),以便在后面進行數(shù)據(jù)的進一步處理(保存在磁盤特定位置或插入數(shù)據(jù)庫)。因為Java虛擬機默認(rèn)可以使用的內(nèi)存空間是有限的,超出限制時將會拋出“java.lang.OutOfMemoryError”錯誤。如果上傳的文件很大,例如800M的文件,在內(nèi)存中將無法臨時保存該文件內(nèi)容,Apache文件上傳組件轉(zhuǎn)而采用臨時文件來保存這些數(shù)據(jù);但如果上傳的文件很小,例如600個字節(jié)的文件,顯然將其直接保存在內(nèi)存中性能會更加好些。
2、setSizeThreshold方法用于設(shè)置是否將上傳文件已臨時文件的形式保存在磁盤的臨界值(以字節(jié)為單位的int值),如果從沒有調(diào)用該方法設(shè)置此臨界值,將會采用系統(tǒng)默認(rèn)值10KB。對應(yīng)的getSizeThreshold() 方法用來獲取此臨界值。
部分代碼:
DiskFileItemFactory factory = new DiskFileItemFactory();
factory.setSizeThreshold(MEMORY_THRESHOLD);
factory.setRepository(new File(System.getProperty("java.io.tmpdir")));
轉(zhuǎn)載于:https://blog.51cto.com/maplebb/2324736
總結(jié)
以上是生活随笔為你收集整理的使用DiskFileItemFactory 实现文件上传 ,设定缓冲区大小和存放临时文件目录。的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 网易云基于Prometheus的微服务监
- 下一篇: 矿洞:坍塌