程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> JSP編程 >> 關於JSP >> 輕松實現JSP文件上傳

輕松實現JSP文件上傳

編輯:關於JSP

    現在越來越多的人開始使用jsp(SUN企業級應用的首選)開發網站程序,文件上傳作為網站平台的一個重要功能,今天我們就來介紹一下如何用jsp(SUN企業級應用的首選)實現。 

  一、RFC1867規范 

  在過去的Html中,表單不能實現文件的上傳,這多少限制了一些網頁的功能。RFC1867規范(即Html中實現基於表單的文件上傳)對表單作出了擴展,增加了一個表單元素&:ltinput type=file>。通過使用這個元素,浏覽器會自動生成一個輸入框和一個按鈕,輸入框可供用戶填寫本地的文件名和路徑名,按鈕可以讓浏覽器打開一個文件選擇框供用戶選擇文件。具體的表單實現如下: 

  <FORM ACTION=upload.jsp ENCTYPE=″multipart/form-data″ METHOD=POST> 
  Please input your name 
  <input type=text name=user><br> Please give us the file 
  <INPUT TYPE=FILE NAME=file1> 
  <input type=submit value=″Send file″> 
  </FORM> 

  特別需要指出的是,只有Netscape 3和IE3.02以後的版本才支持此規范,而且我們實踐下來發現文件選擇按鈕是浏覽器自動生成的,因而按鈕的文字和浏覽器版本有很大的關系,如果是中文的IE,按鈕的文字是“打開...”;英文的Netscape則顯示“Browse...”;如果是Opera,則只有″...″。用戶沒辦法自己設定按鈕文字,不能不說是一種遺憾。除了浏覽器,網絡服務器也要能支持此規范,好在現在市面上絕大部分服務器軟件都沒有問題,微軟的IIS在增加一個插件後也能很好地支持此規范。 

   二、組件的安裝 

  在用戶端實現文件上傳後,就要用JSP來處理用戶的上傳請求。我們可以去www.jspsmart.com下載一個免費的組件來實現這一功能。在安裝之前先確認你的JSP服務器軟件支持JDK1.2.2和JSP1.1,然後只要在Server的class路徑中加入該組件所在的目錄就可以了。 

  三、程序實現 

  1.文件上傳 

  <%@ page language=″java″ import=″com.jspsmart.upload.″%> 
   <HTML> 
   <BODY BGCOLOR=″white″> 
   <H1>jspSmartUpload </H1> 
   <HR> 
   <% int count=0 //設置變量 SmartUpload mySmartUpload=new SmartUpload 
  mySmartUpload.initializepageContext  //初始化 
   mySmartUpload.upload  //上傳 ry 
  count = mySmartUpload.save″/upload″  //把上傳的文件保存在/upload目錄下 out.printlncount + ″ files  uploaded.″  //顯示上傳了多少個文件 
   catch Exception e   out.printlne.toString   %> 
   </BODY> 
   </HTML> 

  需要注意:調試的時候要確認上傳文件所存儲的目錄有可寫屬性。 

  2.表單處理 

  由於上傳文件的表單使用了 ENCTYPE=″multipart/form-data″屬性,所以在JSP中處理表單傳遞的值的時候不能再簡單地使用request.getParameter了,而應該這樣來處理: 

  <%@ page language=″java″ import=″com.jspsmart.upload.″%> 
   <HTML> 
   <BODY BGCOLOR=″white″> 
   <H1>jspSmartUpload </H1> 
   <HR> 
   <% SmartUpload myUpload=new SmartUpload myUpload.initializepageContext  myUpload.upload  out.println″Number of files = ″ + myUpload.getFiles .getCount  + ″<BR>″  out.println″ 
   <BR> 
   <BR> 
   <STRONG>Display information about Requests</STRONG> 
   <BR>″ 
   String[ ]values = myUpload.getRequest 
 .getParameterValues″formtag″  //formtag為表單中元素的name,返回的值為字符數組中第一個元素。 out.printkey + ″ = ″+values0 
  %> 
   </body> 
   </html> 

  3.其他API myUpLoad.setAllowedFilesList″txtdocxls″ 

  設定可以上傳的文件的後綴名; myUpLoad.setDeniedFilesList″batexecomjsp″  設定不能上傳的文件的後綴名; 

  myUpLoad.setMaxFileSize100000  設定單個文件的最大字節數; 

   myUpLoad.setTotalMaxFileSize100000  設定所有上傳文件的最大字節數; 

   myUpload.uploadInFile″/myData.txt″  把表單的內容全部存儲到myData.txt保存; 

  myUpload.getFiles .getCount  獲得上傳的文件的個數; 

  myUpload.getFiles .getSize  獲得上傳的文件的總字節數; 

   myUpload.getFiles .getFileid .getFileName  獲得指定ID號文件的文件名; 

   myUpload.getFiles .getFileid .getFilePathName  獲得指定ID號文件的路徑名; 

   myUpLoad.getFiles .getFile0 .isMissing  返回一布爾值以確定用戶是否上傳了文件。 

  四、其他功能 JspSmartUpload除了能把上傳文件保存到硬盤,還能直接把文件插入到數據庫,同時還能實現文件下載的功能,相信隨著大家的深入研究,一定能將這一功能更好地應用到自己的實踐中去。

技術交流 永無止境

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved