用jspSmartUpload組件實現檔案上傳、下載

來源:互聯網
上載者:User

標籤:style   http   io   ar   color   os   使用   sp   java   

jspSmartUpload組件,可從http://download.csdn.net/user/dearchuansir下載,壓縮包的名字是jspSmartUpload.zip。下載後,將其解壓到Tomcat的webapps目錄下。解壓後,將webapps/jspsmartupload目錄下的子目錄Web-inf名字改為全大寫的WEB-INF,這樣一改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目錄下。  上傳相關代碼 uploadFile.jsp <%@ page contentType="text/html;charset=GB2312"%> <form method="post" action="doUpload.jsp" enctype="multipart/form-data"> <table width="315" border="0">   <tr>     <td width="309" align="center"><input type="file" name="file1" size="30"></td>   </tr>   <tr>     <td align="center"><input type="file" name="file2" size="30"></td>    <tr>     <td align="center"><input type="submit" name="Submit" value="上傳"></td>   </tr> </table> </form> doUpload.jsp <%@ page contentType="text/html; charset=gbk" import="java.util.*,com.jspsmart.upload.*"%> <html> <head> <title>檔案上傳處理頁面</title> <meta http-equiv="Content-Type" content="text/html; charset=gbk"> </head> <body> <% // 建立一個SmartUpload對象 SmartUpload su = new SmartUpload(); // 上傳初始化 su.initialize(pageContext); // 設定上傳限制 // 1.限制每個上傳檔案的最大長度。 // su.setMaxFileSize(10000); // 2.限制總上傳資料的長度。 // su.setTotalMaxFileSize(20000); // 3.設定允許上傳的檔案(通過副檔名限制),僅允許doc,txt檔案。 // su.setAllowedFilesList("doc,txt"); // 4.設定禁止上傳的檔案(通過副檔名限制),禁止上傳帶有exe,bat,jsp,htm,html副檔名的檔案和沒有//副檔名的檔案。 // su.setDeniedFilesList("exe,bat,jsp,htm,html,,"); // 上傳檔案 su.upload(); // 將上傳檔案全部儲存到指定目錄,需要先在在Web應用的根目錄下,建立一個upload目錄 int count = su.save("/upload"); out.println(count+"個檔案上傳成功!<br>"); // 利用Request對象擷取參數之值 out.println("TEST="+su.getRequest().getParameter("TEST") +"<BR><BR>"); // 逐一提取上傳檔案資訊,同時可儲存檔案。 for (int i=0;i<su.getFiles().getCount();i++) { com.jspsmart.upload.File file = su.getFiles().getFile(i); // 若檔案不存在則繼續 if (file.isMissing()) continue; // 顯示當前檔案資訊 out.println("<TABLE BORDER=1>"); out.println("<TR><TD>表單項名(FieldName)</TD><TD>" + file.getFieldName() + "</TD></TR>"); out.println("<TR><TD>檔案長度(Size)</TD><TD>" + file.getSize() + "</TD></TR>"); out.println("<TR><TD>檔案名稱(FileName)</TD><TD>" + file.getFileName() + "</TD></TR>"); out.println("<TR><TD>副檔名(FileExt)</TD><TD>" + file.getFileExt() + "</TD></TR>"); out.println("<TR><TD>檔案全名(FilePathName)</TD><TD>" + file.getFilePathName() + "</TD></TR>"); out.println("</TABLE><BR>"); // 將檔案另存 // file.saveAs("/upload/" + myFile.getFileName()); // 另存到以WEB應用程式的根目錄為檔案根目錄的目錄下 // file.saveAs("/upload/" + myFile.getFileName(),su.SAVE_VIRTUAL); // 另存到作業系統的根目錄為檔案根目錄的目錄下 // file.saveAs("c:\\temp\\" + myFile.getFileName(),su.SAVE_PHYSICAL); } %> </body> </html>  下載相關代碼

 

download.jsp

 

<%@page contentType="text/html;charset=gb2312"%> <html> <head> <title>下載</title> </head> <body> <a href="do_download.jsp">點擊下載</a> </body> </html>  

do_download.jsp

 

<%@ page contentType="text/html;charset=gb2312" import="com.jspsmart.upload.*" %> <% // 建立一個SmartUpload對象 SmartUpload su = new SmartUpload(); // 初始化 su.initialize(pageContext); // 設定contentDisposition為null以禁止瀏覽器自動開啟檔案, //保證點選連結後是下載檔案。若不設定,則下載的副檔名為doc時,瀏覽器將自動用word開啟它。

//副檔名為pdf時,瀏覽器將用acrobat開啟。 su.setContentDisposition(null); // 下載檔案,保證Web應用下的upload目錄下有測試文檔.doc檔案。 su.downloadFile("/upload/測試文檔.doc"); %>

注意:jspSmartUpload編寫下載檔案代碼時,若下載的檔案名稱中有漢字,則瀏覽器在提示另存的檔案名稱時,顯示的是一堆亂碼。為了給jspSmartUpload組件增加下載中文檔案的支援,對返回給瀏覽器的另存檔案名稱進行UTF-8編碼後,瀏覽器便能正確顯示中文名字了。在SmartUpload.java檔案中,增加的方法如下:

 public static String toUtfString(String s) { StringBuffer sb = new StringBuffer(); for (int i=0;i<s.length();i++) { char c = s.charAt(i); if (c >= 0 && c <= 255) { sb.append(c);   } else{     byte[] b;     try {          b = Character.toString(c).getBytes("utf-8");         } catch (Exception ex) {          System.out.println(ex);          b = new byte[0];           }     for (int j = 0; j < b.length; j++) {     int k = b[j];     if (k < 0) k += 256;     sb.append("%" + Integer.toHexString(k).toUpperCase());       }   } }return sb.toString(); }將檔案名稱轉換為UTF-8形式的編碼形式。UTF-8編碼對英文未作任何處理,對中文則需要轉換為%XX的形式。toUtf8String方法中,直接利用Java語言提供的編碼轉換方法獲得漢字字元的UTF-8編碼,之後將其轉換為%XX的形式。修改 getFileName()方法如下,使其調用toUftString()方法private String getFileName(String s) {   int i = 0;   String s1 = toUtfString(s);   i = s1.lastIndexOf(‘/‘);   if (i != -1) {    return s1.substring(i + 1, s1.length());   }   i = s1.lastIndexOf(‘\\‘);   if (i != -1) {    return s1.substring(i + 1, s1.length());   } else {    return s1;   }  }完整的代碼請從http://download.csdn.net/user/dearchuansir下載。

用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.