更新時(shí)間:2021-10-28 來(lái)源:黑馬程序員 瀏覽量:
Fileltem接口用于封裝單個(gè)表單字段元素的數(shù)據(jù),一個(gè)表單字段元素對(duì)應(yīng)一個(gè)Fileltem對(duì)象。為了便于講解,在此將Fileltem的實(shí)現(xiàn)類(lèi)稱(chēng)為Fileltem類(lèi),F(xiàn)ileltem類(lèi)實(shí)現(xiàn)了Serializable接口,因此,支持序列化操作。在FiIeItem類(lèi)中人素的方法,具體如下。
1. boolean isFormField()方法
isFormField()方法用于判斷FileItem類(lèi)對(duì)象封裝的數(shù)據(jù)是一個(gè)普通文本表單字段,還是一個(gè)文件表單字段,如果是普通表單字段則返回true,否則返回false。
2.String getName()方法
getName()方法用于獲得文件上傳字段中的文件名。如果FileItem類(lèi)對(duì)象對(duì)應(yīng)的是普通表單字段,getName()方法將返回null,否則,只要瀏覽器將文件的字段信息傳遞給服務(wù)器,getName()方法就會(huì)返回一個(gè)字符串類(lèi)型的結(jié)果,如“C:\Sunset.jpg”。
需要注意的是,通過(guò)不同瀏覽器上傳的文件,獲取到的完整路徑和名稱(chēng)都是不一樣的。例如,用戶(hù)使用IE瀏覽器上傳文件,獲取到的就是完整的路徑“C:\Sunset.jpg”,如果使用其他瀏覽器,比如火狐,獲取到的僅僅是文件名,沒(méi)有路徑,如“Sunset.jpg”。
3.String getFieldName()方法
getFieldName()方法用于獲得表單字段元素描述頭的name屬性值,也是表單標(biāo)簽name屬性的值,例如“name=file1”中的“file1”。
4. void write(File file)方法
write()方法用于將Fileltem對(duì)象中保存的主體內(nèi)容保存到某個(gè)指定的文件中。如果FileItem對(duì)象中的主體內(nèi)容是保存在某個(gè)臨時(shí)文件中,那么該方法順利完成后,臨時(shí)文件有可能會(huì)被清除。另外,該方法也可將普通表單字段內(nèi)容寫(xiě)入到一個(gè)文件中,但它主要用于將上傳的文件內(nèi)容保存到本地文件系統(tǒng)中。
5.String getString()方法
getString()方法用于將Fileltem對(duì)象中保存的數(shù)據(jù)流內(nèi)容以一個(gè)字符串返回,它有兩個(gè)重載的定義形式;
(1) public String getString()
(2) public String getString(java.lang.String encoding)
在上面重載的兩個(gè)方法中,前者使用默認(rèn)的字符集編碼將主體內(nèi)容轉(zhuǎn)換成字符串,后者使用參數(shù)指足的子付集編碼將主體內(nèi)容轉(zhuǎn)換成字符串。需要注意的是,如果在讀取普通表單字段無(wú)系內(nèi)谷時(shí)出現(xiàn)中文亂碼現(xiàn)象,請(qǐng)調(diào)用第二個(gè)getString)方法,并為之傳遞正確的字符集編碼名稱(chēng)。
倘名外Rssicod.sayThelos oninte .emelblait pait2 )moilelssto molleli
6. String getContentType()方法
getContentType()方法用于獲得上傳文件的類(lèi)型,即表單字段元素描述頭屬性“Content-Type”的值,如"image/jpeg”。如果FileItem類(lèi)對(duì)象對(duì)應(yīng)的是普通表單字段,該方法將返回null。
7.boolean islnMemory()方法
isInMemory()方法用來(lái)判斷FileItem對(duì)象封裝的數(shù)據(jù)內(nèi)容是存儲(chǔ)在內(nèi)存中,還是存儲(chǔ)在臨時(shí)文件中,如果存儲(chǔ)在內(nèi)存中則返回true,否則返回false。
8. void delete()方法
delete()方法用來(lái)清空FileItem類(lèi)對(duì)象中存放的主體內(nèi)容,如果主體內(nèi)容被保存在臨時(shí)文件中,delete()方法將刪除該臨時(shí)文件。需要注意的是,盡管Fileltem對(duì)象被垃圾收集器收集時(shí)會(huì)自動(dòng)清除臨時(shí)文件,但應(yīng)該及時(shí)調(diào)用delete()方法清除臨時(shí)文件,從而釋放系統(tǒng)存儲(chǔ)資源,以防系統(tǒng)出現(xiàn)異常,導(dǎo)致臨時(shí)文件被永久地保存在硬盤(pán)中。
9. InputStream getlnputStream()方法
getInputStream()方法以流的形式返回上傳文件的數(shù)據(jù)內(nèi)容。
10. long getSize()方法
getSize()方法返回該上傳文件的大小(以子節(jié)為單)。