一、安裝篇
jsp(SUN企業級應用的首選)SmartUpload是由www.jsp(SUN企業級應用的首選)smart.com網站開發的一個可免費使用的全功能的文件上傳下載組件,適於嵌入執行上傳下載操作的jsp(SUN企業級應用的首選)文件中。該組件有以下幾個特點:
1、使用簡單。在jsp(SUN企業級應用的首選)文件中僅僅書寫三五行JAVA代碼就可以搞定文件的上傳或下載,方便。
2、能全程控制上傳。利用jsp(SUN企業級應用的首選)SmartUpload組件提供的對象及其操作方法,可以獲得全部上傳文件的信息(包括文件名,大小,類型,擴展名,文件數據等),方便存取。
3、能對上傳的文件在大小、類型等方面做出限制。如此可以濾掉不符合要求的文件。
4、下載靈活。僅寫兩行代碼,就能把Web服務器變成文件服務器。不管文件在Web服務器的目錄下或在其它任何目錄下,都可以利用jsp(SUN企業級應用的首選)SmartUpload進行下載。
5、能將文件上傳到數據庫中,也能將數據庫中的數據下載下來。這種功能針對的是MySQL(和PHP搭配之最佳組合)數據庫,因為不具有通用性,所以本文不准備舉例介紹這種用法。
jsp(SUN企業級應用的首選)SmartUpload組件可以從www.jsp(SUN企業級應用的首選)smart.com網站上自由下載,壓縮包的名字是jsp(SUN企業級應用的首選)SmartUpload.zip。下載後,用WinZip或WinRAR將其解壓到tomcat(一個很好用的JSP運行平台)的webapps目錄下(本文以tomcat(一個很好用的JSP運行平台)服務器為例進行介紹)。解壓後,將webapps/jsp(SUN企業級應用的首選)smartupload目錄下的子目錄Web-inf名字改為全大寫的WEB-INF,這樣一改jsp(SUN企業級應用的首選)SmartUpload類才能使用。因為tomcat(一個很好用的JSP運行平台)對文件名大小寫敏感,它要求Web應用程序相關的類所在目錄為WEB-INF,且必須是大寫。接著重新啟動tomcat(一個很好用的JSP運行平台),這樣就可以在jsp(SUN企業級應用的首選)文件中使用jsp(SUN企業級應用的首選)SmartUpload組件了。
注意,按上述方法安裝後,只有webapps/jsp(SUN企業級應用的首選)smartupload目錄下的程序可以使用jsp(SUN企業級應用的首選)SmartUpload組件,如果想讓tomcat(一個很好用的JSP運行平台)服務器的所有Web應用程序都能用它,必須做如下工作:
1.進入命令行狀態,將目錄切換到tomcat(一個很好用的JSP運行平台)的webapps/jsp(SUN企業級應用的首選)smartupload/WEB-INF目錄下。
2.運行JAR打包命令:jar cvf jsp(SUN企業級應用的首選)SmartUpload.jar com
(也可以打開資源管理器,切換到當前目錄,用WinZip將com目錄下的所有文件壓縮成jsp(SUN企業級應用的首選)SmartUpload.zip,然後將jsp(SUN企業級應用的首選)SmartUpload.zip換名為jsp(SUN企業級應用的首選)SmartUpload.jar文件即可。)
3.將jsp(SUN企業級應用的首選)SmartUpload.jar拷貝到tomcat(一個很好用的JSP運行平台)的shared/lib目錄下。
二、相關類說明篇
㈠ File類
這個類包裝了一個上傳文件的所有信息。通過它,可以得到上傳文件的文件名、文件大小、擴展名、文件數據等信息。
File類主要提供以下方法:
1、saveAs作用:將文件換名另存。
原型:
public void saveAs(java.lang.String destFilePathName)
或
public void saveAs(java.lang.String destFilePathName, int optionSaveAs)
其中,destFilePathName是另存的文件名,optionSaveAs是另存的選項,該選項有三個值,分別是SAVEAS_PHYSICAL,SAVEAS_VIRTUAL,SAVEAS_AUTO。SAVEAS_PHYSICAL表明以操作系統的根目錄為文件根目錄另存文件,SAVEAS_VIRTUAL表明以Web應用程序的根目錄為文件根目錄另存文件,SAVEAS_AUTO則表示讓組件決定,當Web應用程序的根目錄存在另存文件的目錄時,它會選擇SAVEAS_VIRTUAL,否則會選擇SAVEAS_PHYSICAL。
例如,saveAs("/upload/sample.zip",SAVEAS_PHYSICAL)執行後若Web服務器安裝在C盤,則另存的文件名實際是c:uploadsample.zip。而saveAs("/upload/sample.zip",SAVEAS_VIRTUAL)執行後若Web應用程序的根目錄是webapps/jsp(SUN企業級應用的首選)smartupload,則另存的文件名實際是webapps/jsp(SUN企業級應用的首選)smartupload/upload/sample.zip。saveAs("/upload/sample.zip",SAVEAS_AUTO)執行時若Web應用程序根目錄下存在upload目錄,則其效果同saveAs("/upload/sample.zip",SAVEAS_VIRTUAL),否則同saveAs("/upload/sample.zip",SAVEAS_PHYSICAL)。
建議:對於Web程序的開發來說,最好使用SAVEAS_VIRTUAL,以便移植。
2、isMissing
作用:這個方法用於判斷用戶是否選擇了文件,也即對應的表單項是否有值。選擇了文件時,它返回false。未選文件時,它返回true。
原型:public boolean isMissing()
3、getFieldName
作用:取HTML表單中對應於此上傳文件的表單項的名字。
原型:public String getFieldName()
4、getFileName
作用:取文件名(不含目錄信息)
原型:public String getFileName()
5、getFilePathName
作用:取文件全名(帶目錄)
原型:public String getFilePathName
6、getFileExt
作用:取文件擴展名(後綴)
原型:public String getFileExt()
7、getSize
作用:取文件長度(以字節計)
原型:public int getSize()
8、getBinaryData
作用:取文件數據中指定位移處的一個字節,用於檢測文件等處理。
原型:public byte getBinaryData(int index)。其中,index表示位移,其值在0到getSize()-1之間。
㈡ Files類
這個類表示所有上傳文件的集合,通過它可以得到上傳文件的數目、大小等信息。有以下方法:
1、getCount
作用:取得上傳文件的數目。
原型:public int getCount()
2、getFile
作用:取得指定位移處的文件對象File(這是com.jsp(SUN企業級應用的首選)smart.upload.File,不是java.io.File,注意區分)。
原型:public File getFile(int index)。其中,index為指定位移,其值在0到getCount()-1之間。
3、getSize
作用:取得上傳文件的總長度,可用於限制一次性上傳的數據量大小。
原型:public long getSize()
4、getCollection
作用:將所有上傳文件對象以Collection的形式返回,以便其它應用程序引用,浏覽上傳文件信息。
原型:public Collection getCollection()
5、getEnumeration
作用:將所有上傳文件對象以Enumeration(枚舉)的形式返回,以便其它應用程序浏覽上傳文件信息。
原型:public Enumeration getEnumeration()
㈢ Request類
這個類的功能等同於jsp(SUN企業級應用的首選)內置的對象request。只所以提供這個類,是因為對於文件上傳表單,通過request對象無法獲得表單項的值,必須通過jsp(SUN企業級應用的首選)SmartUpload組件提供的Request對象來獲取。該類提供如下方法:
1、getParameter
作用:獲取指定參數之值。當參數不存在時,返回值為null。
原型:public String getParameter(String name)。其中,name為參數的名字。
2、getParameterValues
作用:當一個參數可以有多個值時,用此方法來取其值。它返回的是一個字符串數組。當參數不存在時,返回值為null。
原型:public String[] getParameterValues(String name)。其中,name為參數的名字。
3、getParameterNames
作用:取得Request對象中所有參數的名字,用於遍歷所有參數。它返回的是一個枚舉型的對象。
原型:public Enumeration ge