三、文件上傳篇
㈠ 表單要求
對於上傳文件的FORM表單,有兩個要求:
1、METHOD應用POST,即METHOD="POST"。
2、增加屬性:ENCTYPE="multipart/form-data"
下面是一個用於上傳文件的FORM表單的例子:
<FORM METHOD="POST" ENCTYPE="multipart/form-data" ACTION="/jsp(SUN企業級應用的首選)SmartUpload/upload.jsp(SUN企業級應用的首選)"><INPUT TYPE="FILE" NAME="MYFILE"><INPUT TYPE="SUBMIT"></FORM>
<!-- 文件名:upload.html作 者:縱橫軟件制作中心雨亦奇([email protected])--><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html><head><title>文件上傳</title><meta http-equiv="Content-Type" content="text/html; charset=gb2312"></head><body><p> </p><p align="center">上傳文件選擇</p><FORM METHOD="POST" ACTION="jsp(SUN企業級應用的首選)/do_upload.jsp(SUN企業級應用的首選)"ENCTYPE="multipart/form-data"><input type="hidden" name="TEST" value="good"> <table width="75%" border="1" align="center"> <tr> <td><div align="center">1、 <input type="FILE" name="FILE1" size="30"> </div></td> </tr> <tr> <td><div align="center">2、 <input type="FILE" name="FILE2" size="30"> </div></td> </tr> <tr> <td><div align="center">3、 <input type="FILE" name="FILE3" size="30"> </div></td> </tr> <tr> <td><div align="center">4、 <input type="FILE" name="FILE4" size="30"> </div></td> </tr> <tr> <td><div align="center"> <input type="submit" name="Submit" value="上傳它!"> </div></td> </tr> </table></FORM></body></html>
<%--文件名:do_upload.jsp(SUN企業級應用的首選)作 者:縱橫軟件制作中心雨亦奇([email protected])--%><%@ page contentType="text/html; charset=gb2312" language="java" import="java.util.*,com.jsp(SUN企業級應用的首選)smart.upload.*" errorPage="" %><html><head><title>文件上傳處理頁面</title><meta http-equiv="Content-Type" content="text/html; charset=gb2312"></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(SUN企業級應用的首選),htm,html擴展名的文件和沒有擴展名的文件。// su.setDeniedFilesList("exe,bat,jsp(SUN企業級應用的首選),htm,html,,");// 上傳文件su.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.jsp(SUN企業級應用的首選)smart.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>