在這個例子中我們使用的平臺為IBM WebSphere Portal 4.2,開發(fā)工具為WSAD + Portal Toolkit 4.7,檔案上傳套件為jakarta commons專案中的FileUpload套件。FileUpload套件下載網(wǎng)址為http://jakarta./commons/fileupload/。下載檔案為commons-fileupload-1.0.zip,解壓縮後會發(fā)現(xiàn)內(nèi)含一個commons-fileupload-1.0.jar檔案,這就是我們需要的檔案上傳類別庫。接下來一步步建立一個Portlet Application。 (1)新建一個Portlet Application,名稱為FileUpload。 (2)將先前所提的commons-fileupload-1.0.jar類別庫檔案加入Portlet Application的類別庫目錄中({$WSAD_WORKSPACE}/FileUpload/WebContent/WEB-INF/lib/) (3)在FileUpload中加入一個新的Portlet,名稱為FileUploadPortlet (4)在FileUploadPortlet中先建立第一個View Fragment,名稱為Initial.jsp。在Initial.jsp建立一個表單,表單內(nèi)包含上傳檔案的欄位。參考程式碼如下:
要注意的地方是,如果是包含上傳檔案欄位的表單,則FORM的ENCTYPE屬性要設(shè)為multipart/form-data (5)實作Portlet內(nèi)容,也就是FileUploadPortlet.java。要使用commons FileUpload套件所提供的功能來處理上傳檔案,首先要匯入下列package: import java.util.*; import java.io.*; import javax.servlet.http.*; import org.apache.commons.fileupload.*; import org.apache.jetspeed.portlet.*; import org.apache.jetspeed.portletcontainer.PortletRequestImpl; 另外,主要處理上傳檔案的部分就是在actionPerformed方法中,範例程式碼如下:
其中比較值得注意的地方是紅色那行,由於FileUpload套件的MultiPartRequestParser (此處為DiskFileUpload)的parse方法接受的參數(shù)為HttpServletRequest,但是我們在Portlet中得到的卻是PortletRequest,而這兩種request類別之間似乎無直接繼承關(guān)係,因此使用特別方式將PortletRequest轉(zhuǎn)換成HttpServletRequest (見範例程式第5行),再交給MultiPartRequestParser處理。由此可看出,似乎PortletRequest中包含了HttpServletRequest。另外這種偷吃步的用法目前僅知適用於Portal 4.2 API,至於Portal 5.x API則尚未確定,如果有其他人有適用於Portal 5.x API 的檔案上傳方法,也希望能提供分享 ![]() |
|
來自: smoking_boy > 《我的圖書館》