Servlet檔案上傳之FileItem類的常用方法
1. boolean isFormField()
isFormField方法用於判斷FileItem類物件封裝的資料是一個普通文字表單欄位,還是一個檔案表單欄位,如果是普通表單欄位則返回true,否則返回false。因此,可以使用該方法判斷是否為普通表單域,還是檔案上傳表單域。
2. String getName()
getName方法用於獲得檔案上傳欄位中的檔名。
注意IE或FireFox中獲取的檔名是不一樣的,IE中是絕對路徑,FireFox中只是檔名。
3. String getFieldName()
getFieldName方法用於返回表單標籤name屬性的值。如上例中<input type="text" name="column" />的value。
4. void write(File file)
write方法用於將FileItem物件中儲存的主體內容儲存到某個指定的檔案中。如果FileItem物件中的主體內容是儲存在某個臨時檔案中,該方法順利完成後,臨時檔案有可能會被清除。該方法也可將普通表單欄位內容寫入到一個檔案中,但它主要用途是將上傳的檔案內容儲存在本地檔案系統中。
5. String getString()
getString方法用於將FileItem物件中儲存的資料流內容以一個字串返回,它有兩個過載的定義形式:
public java.lang.String getString()
public java.lang.String getString(java.lang.String encoding)
throws java.io.UnsupportedEncodingException
前者使用預設的字符集編碼將主體內容轉換成字串,後者使用引數指定的字符集編碼將主體內容轉換成字串。如果在讀取普通表單欄位元素的內容時出現了中文亂碼現象,請呼叫第二個getString方法,併為之傳遞正確的字符集編碼名稱。
6. String getContentType()
getContentType 方法用於獲得上傳檔案的型別,即表單欄位元素描述頭屬性“Content-Type”的值,如“image/jpeg”。如果FileItem類物件對應的是普通表單欄位,該方法將返回null。
7. boolean isInMemory()
isInMemory方法用來判斷FileItem物件封裝的資料內容是儲存在記憶體中,還是儲存在臨時檔案中,如果儲存在記憶體中則返回true,否則返回false。
8. void delete()
delete方法用來清空FileItem類物件中存放的主體內容,如果主體內容被儲存在臨時檔案中,delete方法將刪除該臨時檔案。
儘管當FileItem物件被垃圾收集器收集時會自動清除臨時檔案,但及時呼叫delete方法可以更早的清除臨時檔案,釋放系統儲存資源。另外,當系統出現異常時,仍有可能造成有的臨時檔案被永久儲存在了硬碟中。
9. InputStream getInputStream()
以流的形式返回上傳檔案的資料內容。
10. long getSize()
返回該上傳檔案的大小(以位元組為單位)。