<FORM METHOD="POST" ENCTYPE="multipart/form-data" ACTION="/jspSmartUpload/upload.jsp"> <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/do_upload.jsp"
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 作者:縱橫軟體製作中心雨亦奇([email protected]) --%> <%@ page contentType="text/html; charset=gb2312" language="java" import="java.util.*,com.jspsmart.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,htm,html副檔名的檔案和沒有副檔名的檔案。 // su.setDeniedFilesList("exe,bat,jsp,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.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.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> <a href="jsp/do_download.jsp">點擊下載</a> </body> </html> |
<%@ 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);
// 下載檔案 su.downloadFile("/upload/如何賺取我的第一桶金.doc");
%> |
public void downloadFile(String s, String s1, String s2, int i)
throws ServletException, IOException, SmartUploadException
{
if(s == null)
throw new IllegalArgumentException("File '" + s +
"' not found (1040).");
if(s.equals(""))
throw new IllegalArgumentException("File '" + s +
"' not found (1040).");
if(!isVirtual(s) && m_denyPhysicalPath)
throw new SecurityException("Physical path is
denied (1035).");
if(isVirtual(s))
s = m_application.getRealPath(s);
java.io.File file = new java.io.File(s);
FileInputStream fileinputstream = new FileInputStream(file);
長 l = file.length();
boolean flag = false;
int k = 0;
byte abyte0[] = new byte[i];
if(s1 == null)
m_response.setContentType("application/x-msdownload");
else
if(s1.length() == 0)
m_response.setContentType("application/x-msdownload");
else
m_response.setContentType(s1);
m_response.setContentLength((int)l);
m_contentDisposition = m_contentDisposition != null ?
m_contentDisposition : "attachment;";
if(s2 == null)
m_response.setHeader("Content-Disposition",
m_contentDisposition + " filename=" +
toUtf8String(getFileName(s)));
else
if(s2.length() == 0)
m_response.setHeader("Content-Disposition",
m_contentDisposition);
else
m_response.setHeader("Content-Disposition",
m_contentDisposition + " filename=" + toUtf8String(s2));
while((long)k < l)
{
int j = fileinputstream.read(abyte0, 0, i);
k += j;
m_response.getOutputStream().write(abyte0, 0, j);
}
fileinputstream.close();
}
/**
* 將檔案名稱中的漢字轉為UTF8編碼的字串,以便下載時能正確顯示另存的檔案名稱.
* 縱橫軟體製作中心雨亦奇2003.08.01
* @param s 原始檔名* @return 重新編碼後的檔名*/
public static String toUtf8String(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();
} |