用JSP檔案上傳輕鬆實現

來源:互聯網
上載者:User
js


現在JSP被越來越多的人應用在背景程式的開發及動態網頁的製作上了,今天就來介紹一下如何用JSP來實現檔案的上傳。

  一、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.initializepageContext //初始化
   mySmartUpload.upload //上傳 ry
   count = mySmartUpload.save″/upload″ //把上傳的檔案儲存在/upload目錄下 out.printlncount + ″ files uploaded.″ //顯示上傳了多少個檔案
   catch Exception e out.printlne.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.initializepageContext 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.printkey + ″ = ″+values0
%>
   </body>
   </html>

  3.其他API myUpLoad.setAllowedFilesList″txtdocxls″

設定可以上傳的檔案的尾碼名; myUpLoad.setDeniedFilesList″batexecomjsp″ 設定不能上傳的檔案的尾碼名;

  myUpLoad.setMaxFileSize100000 設定單個檔案的最大位元組數;

   myUpLoad.setTotalMaxFileSize100000 設定所有上傳檔案的最大位元組數;

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

  myUpload.getFiles.getCount 獲得上傳的檔案的個數;

  myUpload.getFiles.getSize 獲得上傳的檔案的總位元組數;

   myUpload.getFiles.getFileid.getFileName 獲得指定ID號檔案的檔案名稱;

   myUpload.getFiles.getFileid.getFilePathName 獲得指定ID號檔案的路徑名;

   myUpLoad.getFiles.getFile0.isMissing 返回一布爾值以確定使用者是否上傳了檔案。

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




相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.