(一)SmartUpload組件簡介
SmartUpload組件
專門用於實現文件上傳及下載的免費組件
(二)SmartUpload組件特點
使用簡單:編寫少量代碼,完成上傳下載功能
能夠控制上傳內容
能夠控制上傳文件的大小、類型
缺點:目前已停止更新服務
(三)SmartUpload組件應用條件
File類及方法
SmartUpload類及方法

文件上傳的實現
控制上傳文件的類型
控制上傳文件的大小
注意:
㈠ 表單要求
對於上傳文件的FORM表單,有兩個要求:
1、METHOD應用POST,即METHOD="POST"。
2、增加屬性:ENCTYPE="multipart/form-data"
案例:下面是一個用於上傳文件的FORM表單的例子:
表單頁面indes.jsp <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <% String path = request.getContextPath(); String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <base href="<%=basePath%>"> <title>SmartUpload</title> </head> <body> <form action="doupload.jsp" method="post" enctype="multipart/form-data"> 姓名:<input type="text" name="username" /><br/> 密碼:<input type="text" name="pwd" /><br/> 文件1:<input type="file" name="file1" /><br/> 文件2:<input type="file" name="file2" /><br/> 文件3:<input type="file" name="file3" /><br/> 文件4:<input type="file" name="file4" /><br/> 文件5:<input type="file" name="file5" /><br/> 文件6:<input type="file" name="file6" /><br/> 文件7:<input type="file" name="file7" /><br/> <input type="submit" /> </form> </body> </html>
處理表單頁
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <%@page import="com.jspsmart.upload.SmartUpload"%> <%@page import="com.jspsmart.upload.File"%> <% //----處理上傳文件 /* 使用smartupload 1、添加組件jar包至WEB-INF/lib包中 2、設置form表單的提交類型為二進制類型 */ //創建smartupload組件 SmartUpload su = new SmartUpload(); //初始化組件上下文 su.initialize(pageContext); //設置編碼 su.setCharset("utf-8"); try{ //允許上傳的文件類型 //su.setAllowedFilesList("doc"); //限制上傳文件的類型 //su.setDeniedFilesList("bat"); //限制上傳文件的大小 //su.setMaxFileSize(2000); //上傳文件 su.upload(); }catch(Exception e){ %> <script type="text/javascript"> alert("不允許上傳:bat,exe,jsp,html,htm,java,class文件類型"); location.href="index.jsp"; </script> <% } out.println("上傳"+su.save("upload\\")+"個文件成功!!!"); //得到表單項 String name = su.getRequest().getParameter("username"); String pwd = su.getRequest().getParameter("pwd"); /* 實現多文件上傳 */ for(int i = 0; i < su.getFiles().getCount(); i++){ //獲取單個文件 File file = su.getFiles().getFile(i); //判斷當前file是否選擇了文件;如果沒有則繼續 if(file.isMissing())continue; //設置上傳服務器的位置 String path = "upload\\"; //得到上傳文件的名稱 String filename = file.getFileName(); //上傳文件的路徑 path = path + filename; //保存文件 file.saveAs(path,SmartUpload.SAVE_VIRTUAL); out.println("<table border=1>"); out.println("<tr><td>姓名:</td><td>"+name+"</td></tr>"); out.println("<tr><td>密碼:</td><td>"+pwd+"</td></tr>"); out.println("<tr><td>上傳的文件名稱(filename):</td><td>"+filename+"</td></tr>"); out.println("<tr><td>上傳的文件表單項名稱(fliedname):</td><td>"+file.getFieldName()+"</td></tr>"); out.println("<tr><td>上傳的文件的大小(長度)(size):</td><td>"+file.getSize()+"</td></tr>"); out.println("<tr><td>上傳的文件的擴展名(ext):</td><td>"+file.getFileExt()+"</td></tr>"); out.println("</table><br/>"); } %>