當(dāng)我們?cè)?HTML表單中選擇本地文件之后點(diǎn)擊“提交”按鈕則會(huì)將文件上傳到服務(wù)器中,此時(shí)該 HTTP 請(qǐng)求正文的數(shù)據(jù)類型就是multipart/form-data 型的。而在 Servlet 技術(shù)中,該 HTTP 請(qǐng)求會(huì)被 Servlet 容器(如Tomcat)包裝成 HttpServletRequest 對(duì)象,再由端所請(qǐng)求的相應(yīng) Servlet 進(jìn)行處理。
但是,如果此時(shí)我們?cè)诜?wù)器端編寫的 Servlet 一點(diǎn)點(diǎn)地解析這個(gè)HTTP 請(qǐng)求,分離出其中的文本表單和上傳的文件類型,這未免有點(diǎn)低效。于是,我們可以使用 Apache 開源上傳軟件包fileupload 來(lái)簡(jiǎn)化這一過(guò)程,直接使用即可。下載地址:http://commons.apache.org/fileupload/
在 fileupload 包中, HTTP請(qǐng)求中的復(fù)雜表單元素都被看做一個(gè) FileItem 對(duì)象;FileItem 對(duì)象必須由 ServletFileUpload 類中的parseRequest() 方法解析 HTTP 請(qǐng)求(即被包裝之后的 HttpServletRequest對(duì)象)出來(lái),即分離出具體的文本表單和上傳文件;而 ServletFileUpload 對(duì)象的創(chuàng)建需要依賴于FileItemFactory 工廠將獲得的上傳文件 FileItem 對(duì)象保存至服務(wù)器硬盤,即 DiskFileItem對(duì)象。
DiskFileItemFactory是創(chuàng)建FileItem對(duì)象的工廠包括方法:
————1.public voidsetSizeThreshold(int?sizeThreshold)
設(shè)置內(nèi)存緩沖區(qū)的大小,默認(rèn)值為10K,如果文件大于10K,將使用臨時(shí)文件緩
存上傳文件.
2.public voidsetRepository(java.io.File repository)
指定臨時(shí)文件目錄
3.publicDiskFileItemFactory();
ServletFileUpload負(fù)責(zé)處理上傳的文件數(shù)據(jù),并將表單中每個(gè)輸入項(xiàng)封裝成
一個(gè)FileItem對(duì)象中.
常用方法:
1.booleanisMultipartContent(HttpservletRequest request)
判斷上傳表單是否為上傳表單類型
2.ListparseRequest(HttpServletRequest request)
對(duì)requests對(duì)象進(jìn)行解析,并把表單中的每一個(gè)輸入項(xiàng)包裝成一個(gè)fileItem
對(duì)象,并返回一個(gè)保存了所有FileItem的list集合.
3.setFileSizeMax(longfileSizeMax)設(shè)置上傳文件最大值
4.setSizeMax(longsizeMax)設(shè)置上傳文件總量的最大值
5.setHeaderEncoding()設(shè)置編碼格式
愛(ài)華網(wǎng)本文地址 » http://www.klfzs.com/a/25101016/314547.html
愛(ài)華網(wǎng)



