1. 程式人生 > >Servlet檔案上傳之FileItem類的常用方法

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()

返回該上傳檔案的大小(以位元組為單位)。