1. 程式人生 > >使用jspSmartUpload元件進行檔案上傳、下載

使用jspSmartUpload元件進行檔案上傳、下載

 jspSmartUpload元件是一個可以免費使用的檔案上傳與下載元件。使用者可以把他安裝在web伺服器上,再進行使用。
       jspSmartUpload元件使用非常簡單。在jsp檔案中僅需要寫幾行程式碼就可以實現檔案的上傳、下載。並能夠全程控制上傳。利用jspSmartUpload|元件提供的物件及其操作方法,可以獲得全部上傳、下載的資訊,如檔名,大小,型別、副檔名。。。。以方便檔案的存取;能對上傳的檔案在大小、型別等方面做出限制。這樣就可以過濾掉不符合要求的檔案;下載靈活。只須寫很少的程式碼就能把web伺服器變成檔案伺服器,不管檔案在不在web伺服器的目錄下,都可以利用該元件進行下載。

     在使用jspSmartUpload時,必須將該元件放在專案中相應的目錄裡,如:WebRoot/WEB-INF/lib
   一、檔案上傳
         下面是一個jsp頁面,表單中有4個檔案輸入文字框,可以同時上傳4個檔案:
[html] view plain copy  print?
  1. <formaction="file?file=upLoadByjs"method="post"ENCTYPE="multipart/form-data">
  2.       <inputtype="file"name=file1" size="30"><Br>
  3.       <
    inputtype="file"name=file2" size="30"><Br>
  4.       <inputtype="file"name=file3" size="30"><Br>
  5.       <inputtype="file"name=file4" size="30"><Br>
  6.       <inputtype="submit"value="上傳">
  7.     </form>

當然可以設定同時上傳更多的檔案......
servlet處理程式:
[java] view plain copy  print
?
  1. String path ="D:/work space/JSP workspace/jsp_servlet_upAndLoad/file/upLoad";  
  2.     //新建一個jsmartUpLoad物件
  3.     SmartUpload smartUpload = new SmartUpload();  
  4.     //上傳初始化
  5.     smartUpload.initialize(this.getServletConfig(),request,response);  
  6.     try {  
  7.       //設定上傳限制
  8.       //限制每個上傳檔案的最大長度;將最大設定為1024*1024*20
  9.       smartUpload.setMaxFileSize(1024*1024*10);     
  10.       //限制總上傳資料的長度
  11.       smartUpload.setTotalMaxFileSize(1024*1024*20);  
  12.       //限制允許上傳的檔案型別、允許doc、txt、bat檔案
  13.       smartUpload.setAllowedFilesList("doc,txt,bat");  
  14.       //限制禁止上傳的檔案型別,禁止exe、jsp、和沒有副檔名的檔案
  15.       smartUpload.setDeniedFilesList("exe,jsp,,");  
  16.       //上傳檔案
  17.       smartUpload.upload();  
  18.       //將檔案儲存到指定的目錄下
  19.       smartUpload.save(path);  
  20.     } catch (SQLException e) {  
  21.       e.printStackTrace();  
  22.     } catch (SmartUploadException e) {  
  23.       e.printStackTrace();  
  24.     }  
  25.     //逐一提取檔案資訊,同時輸出上傳檔案的資訊
  26.     for (int i = 0; i < smartUpload.getFiles().getCount(); i++) {  
  27.       com.jspsmart.upload.File  myFile =smartUpload.getFiles().getFile(i);  
  28.       //若檔案表單中的檔案選項沒有選擇檔案則繼續
  29.       if(myFile.isMissing())  
  30.         continue;  
  31.       //顯示當前檔案的資訊
  32.       response.setContentType("text/html;charset=utf-8");  
  33.       PrintWriter out = response.getWriter();  
  34.       out.println("<table border='1'>");  
  35.       out.println("<tr><td>表單選項</td><td>"+myFile.getFieldName()+"</td></tr>");  
  36.       out.println("<tr><td>檔案長度:</td><td>"+myFile.getSize()+"</td></tr>");  
  37.       out.println("<tr><td>檔名</td><td>"+myFile.getFileName()+"</td></tr>");  
  38.       out.println("<tr><td>副檔名</td><td>"+myFile.getFileExt()+"</td></tr>");  
  39.       out.println("<tr><td>檔案全名</td><td>"+myFile.getFilePathName()+"</td></tr>");  
  40.       out.println("</table><br>");  
  41.     }  

該程式直接使用SmartUploa物件來實現檔案上傳。在申請物件後,必須要對其進行初始化:smartUpload.initialize(this.getServletConfig(),request,response);

二、檔案下載
     使用jspSmartUpload元件進行檔案下載,可以非常簡單:
      jsp頁面:
[html] view plain copy  print?
  1. <ahref="${pageContext.request.contextPath }/file1?file=downByJsmart&name=user.txt">下載user</a>

處理程式:
[java] view plain copy  print?
  1. //獲取下載檔名
  2.     String fileName = request.getParameter("name");  
  3.     //新建一個smartUpload物件
  4.     SmartUpload smartUpload = new SmartUpload();  
  5.     //初始化
  6.     smartUpload.initialize(this.getServletConfig(), request, response);  
  7.     //設定contentDisposition為null以禁止瀏覽器自動開啟檔案
  8.     //保證單擊連結後是下載檔案。
  9.     smartUpload.setContentDisposition(null);  
  10.     //下載檔案
  11.     try {  
  12.       smartUpload.downloadFile("D:/work space/JSP workspace/jsp_servlet_upAndLoad/file/upLoad/"+fileName);  
  13.     } catch (SmartUploadException e) {  
  14.       e.printStackTrace();  
  15.     }