jspSmartUpload上傳下載全攻略1
2024-09-05 00:20:30
供稿:網友
一、安裝篇
jspsmartupload是由www.jspsmart.com網站開發的一個可免費使用的全功能的文件上傳下載組件,適于嵌入執行上傳下載操作的jsp文件中。該組件有以下幾個特點:
1、使用簡單。在jsp文件中僅僅書寫三五行java代碼就可以搞定文件的上傳或下載,方便。
2、能全程控制上傳。利用jspsmartupload組件提供的對象及其操作方法,可以獲得全部上傳文件的信息(包括文件名,大小,類型,擴展名,文件數據等),方便存取。
3、能對上傳的文件在大小、類型等方面做出限制。如此可以濾掉不符合要求的文件。
4、下載靈活。僅寫兩行代碼,就能把web服務器變成文件服務器。不管文件在web服務器的目錄下或在其它任何目錄下,都可以利用jspsmartupload進行下載。
5、能將文件上傳到數據庫中,也能將數據庫中的數據下載下來。這種功能針對的是mysql數據庫,因為不具有通用性,所以本文不準備舉例介紹這種用法。
jspsmartupload組件可以從www.jspsmart.com網站上自由下載,壓縮包的名字是jspsmartupload.zip。下載后,用winzip或winrar將其解壓到tomcat的webapps目錄下(本文以tomcat服務器為例進行介紹)。解壓后,將webapps/jspsmartupload目錄下的子目錄web-inf名字改為全大寫的web-inf,這樣一改jspsmartupload類才能使用。因為tomcat對文件名大小寫敏感,它要求web應用程序相關的類所在目錄為web-inf,且必須是大寫。接著重新啟動tomcat,這樣就可以在jsp文件中使用jspsmartupload組件了。
注意,按上述方法安裝后,只有webapps/jspsmartupload目錄下的程序可以使用jspsmartupload組件,如果想讓tomcat服務器的所有web應用程序都能用它,必須做如下工作:
1.進入命令行狀態,將目錄切換到tomcat的webapps/jspsmartupload/web-inf目錄下。
2.運行jar打包命令:jar cvf jspsmartupload.jar com
(也可以打開資源管理器,切換到當前目錄,用winzip將com目錄下的所有文件壓縮成jspsmartupload.zip,然后將jspsmartupload.zip換名為jspsmartupload.jar文件即可。)
3.將jspsmartupload.jar拷貝到tomcat的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:/upload/sample.zip。而saveas("/upload/sample.zip",saveas_virtual)執行后若web應用程序的根目錄是webapps/jspsmartupload,則另存的文件名實際是webapps/jspsmartupload/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.jspsmart.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內置的對象request。只所以提供這個類,是因為對于文件上傳表單,通過request對象無法獲得表單項的值,必須通過jspsmartupload組件提供的request對象來獲取。該類提供如下方法:
1、getparameter
作用:獲取指定參數之值。當參數不存在時,返回值為null。
原型:public string getparameter(string name)。其中,name為參數的名字。
2、getparametervalues
作用:當一個參數可以有多個值時,用此方法來取其值。它返回的是一個字符串數組。當參數不存在時,返回值為null。
原型:public string[] getparametervalues(string name)。其中,name為參數的名字。
3、getparameternames
作用:取得request對象中所有參數的名字,用于遍歷所有參數。它返回的是一個枚舉型的對象。
原型:public enumeration getparameternames()
㈣ smartupload類這個類完成上傳下載工作。
a.上傳與下載共用的方法:
只有一個:initialize。
作用:執行上傳下載的初始化工作,必須第一個執行。
原型:有多個,主要使用下面這個:
public final void initialize(javax.servlet.jsp.pagecontext pagecontext)
其中,pagecontext為jsp頁面內置對象(頁面上下文)。
b.上傳文件使用的方法:
1、upload
作用:上傳文件數據。對于上傳操作,第一步執行initialize方法,第二步就要執行這個方法。
原型:public void upload()
2、save
作用:將全部上傳文件保存到指定目錄下,并返回保存的文件個數。
原型:public int save(string destpathname)
和public int save(string destpathname,int option)
其中,destpathname為文件保存目錄,option為保存選項,它有三個值,分別是save_physical,save_virtual和save_auto。(同file類的saveas方法的選項之值類似)save_physical指示組件將文件保存到以操作系統根目錄為文件根目錄的目錄下,save_virtual指示組件將文件保存到以web應用程序根目錄為文件根目錄的目錄下,而save_auto則表示由組件自動選擇。
注:save(destpathname)作用等同于save(destpathname,save_auto)。
3、getsize
作用:取上傳文件數據的總長度
原型:public int getsize()
4、getfiles
作用:取全部上傳文件,以files對象形式返回,可以利用files類的操作方法來獲得上傳文件的數目等信息。
原型:public files getfiles()
5、getrequest
作用:取得request對象,以便由此對象獲得上傳表單參數之值。
原型:public request getrequest()
6、setallowedfileslist
作用:設定允許上傳帶有指定擴展名的文件,當上傳過程中有文件名不允許時,組件將拋出異常。
原型:public void setallowedfileslist(string allowedfileslist)
其中,allowedfileslist為允許上傳的文件擴展名列表,各個擴展名之間以逗號分隔。如果想允許上傳那些沒有擴展名的文件,可以用兩個逗號表示。例如:setallowedfileslist("doc,txt,,")將允許上傳帶doc和txt擴展名的文件以及沒有擴展名的文件。
7、setdeniedfileslist
作用:用于限制上傳那些帶有指定擴展名的文件。若有文件擴展名被限制,則上傳時組件將拋出異常。
原型:public void setdeniedfileslist(string deniedfileslist)
其中,deniedfileslist為禁止上傳的文件擴展名列表,各個擴展名之間以逗號分隔。如果想禁止上傳那些沒有擴展名的文件,可以用兩個逗號來表示。例如:setdeniedfileslist("exe,bat,,")將禁止上傳帶exe和bat擴展名的文件以及沒有擴展名的文件。
8、setmaxfilesize
作用:設定每個文件允許上傳的最大長度。
原型:public void setmaxfilesize(long maxfilesize)
其中,maxfilesize為為每個文件允許上傳的最大長度,當文件超出此長度時,將不被上傳。
9、settotalmaxfilesize
作用:設定允許上傳的文件的總長度,用于限制一次性上傳的數據量大小。
原型:public void settotalmaxfilesize(long totalmaxfilesize)
其中,totalmaxfilesize為允許上傳的文件的總長度。