C# 版本
UpLoad.aspx
<%
...
@ Page language="c#" Codebehind="UpLoad.aspx.cs" AutoEventWireup="false" Inherits="WebPortal.Upload"
%>
<! DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
< HTML >
< HEAD >
< title > 多文件上传 </ title >
< script language ="JavaScript" > ...
function addFile()
...{
var str = '<INPUT type="file" size="50" NAME="File">'
document.getElementById('MyFile').insertAdjacentHTML("beforeEnd",str)
}
</ script >
</ HEAD >
< body >
< form id ="form1" method ="post" runat ="server" enctype ="multipart/form-data" >
< div align ="center" >
< h3 > 多文件上传 </ h3 >
< P id ="MyFile" >< INPUT type ="file" size ="50" NAME ="File" ></ P >
< P >
< input type ="button" value ="增加(Add)" onclick ="addFile()" >
< input onclick ="this.form.reset()" type ="button" value ="重置(ReSet)" >
< asp:Button Runat ="server" Text ="开始上传" ID ="UploadButton" ></ asp:Button >
</ P >
< P >
< asp:Label id ="strStatus" runat ="server" Font-Names ="宋体" Font-Bold ="True" Font-Size ="9pt"
Width ="500px" BorderStyle ="None" BorderColor ="White" ></ asp:Label >
</ P >
</ div >
</ form >
</ body >
</ HTML >
<! DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
< HTML >
< HEAD >
< title > 多文件上传 </ title >
< script language ="JavaScript" > ...
function addFile()
...{
var str = '<INPUT type="file" size="50" NAME="File">'
document.getElementById('MyFile').insertAdjacentHTML("beforeEnd",str)
}
</ script >
</ HEAD >
< body >
< form id ="form1" method ="post" runat ="server" enctype ="multipart/form-data" >
< div align ="center" >
< h3 > 多文件上传 </ h3 >
< P id ="MyFile" >< INPUT type ="file" size ="50" NAME ="File" ></ P >
< P >
< input type ="button" value ="增加(Add)" onclick ="addFile()" >
< input onclick ="this.form.reset()" type ="button" value ="重置(ReSet)" >
< asp:Button Runat ="server" Text ="开始上传" ID ="UploadButton" ></ asp:Button >
</ P >
< P >
< asp:Label id ="strStatus" runat ="server" Font-Names ="宋体" Font-Bold ="True" Font-Size ="9pt"
Width ="500px" BorderStyle ="None" BorderColor ="White" ></ asp:Label >
</ P >
</ div >
</ form >
</ body >
</ HTML >
UpLoad.aspx.cs
using
System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
namespace WebPortal
... {
/**//// <summary>
/// UpLoad 的摘要说明。
/// 实现多文件上传
/// </summary>
public class Upload : System.Web.UI.Page
...{
protected System.Web.UI.WebControls.Button UploadButton;
protected System.Web.UI.WebControls.Label strStatus;
private void Page_Load(object sender, System.EventArgs e)
...{
/**//// 在此处放置用户代码以初始化页面
if (this.IsPostBack) this.SaveImages();
}
private Boolean SaveImages()
...{
/**////'遍历File表单元素
HttpFileCollection files = HttpContext.Current.Request.Files;
/**//// '状态信息
System.Text.StringBuilder strMsg = new System.Text.StringBuilder();
strMsg.Append("上传的文件分别是:<hr color=red>");
try
...{
for(int iFile = 0; iFile < files.Count; iFile++)
...{
/**////'检查文件扩展名字
HttpPostedFile postedFile = files[iFile];
string fileName, fileExtension;
fileName = System.IO.Path.GetFileName(postedFile.FileName);
if (fileName != "")
...{
fileExtension = System.IO.Path.GetExtension(fileName);
strMsg.Append("上传的文件类型:" + postedFile.ContentType.ToString() + "<br>");
strMsg.Append("客户端文件地址:" + postedFile.FileName + "<br>");
strMsg.Append("上传文件的文件名:" + fileName + "<br>");
strMsg.Append("上传文件的扩展名:" + fileExtension + "<br><hr>");
/**////'可根据扩展名字的不同保存到不同的文件夹
///注意:可能要修改你的文件夹的匿名写入权限。
postedFile.SaveAs(System.Web.HttpContext.Current.Request.MapPath("images/") + fileName);
}
}
strStatus.Text = strMsg.ToString();
return true;
}
catch(System.Exception Ex)
...{
strStatus.Text = Ex.Message;
return false;
}
}
Web 窗体设计器生成的代码#region Web 窗体设计器生成的代码
override protected void OnInit(EventArgs e)
...{
//
// CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
//
InitializeComponent();
base.OnInit(e);
}
/**//// <summary>
/// 设计器支持所需的方法 - 不要使用代码编辑器修改
/// 此方法的内容。
/// </summary>
private void InitializeComponent()
...{
this.ID = "Upload";
this.Load += new System.EventHandler(this.Page_Load);
}
#endregion
}
}
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
namespace WebPortal
... {
/**//// <summary>
/// UpLoad 的摘要说明。
/// 实现多文件上传
/// </summary>
public class Upload : System.Web.UI.Page
...{
protected System.Web.UI.WebControls.Button UploadButton;
protected System.Web.UI.WebControls.Label strStatus;
private void Page_Load(object sender, System.EventArgs e)
...{
/**//// 在此处放置用户代码以初始化页面
if (this.IsPostBack) this.SaveImages();
}
private Boolean SaveImages()
...{
/**////'遍历File表单元素
HttpFileCollection files = HttpContext.Current.Request.Files;
/**//// '状态信息
System.Text.StringBuilder strMsg = new System.Text.StringBuilder();
strMsg.Append("上传的文件分别是:<hr color=red>");
try
...{
for(int iFile = 0; iFile < files.Count; iFile++)
...{
/**////'检查文件扩展名字
HttpPostedFile postedFile = files[iFile];
string fileName, fileExtension;
fileName = System.IO.Path.GetFileName(postedFile.FileName);
if (fileName != "")
...{
fileExtension = System.IO.Path.GetExtension(fileName);
strMsg.Append("上传的文件类型:" + postedFile.ContentType.ToString() + "<br>");
strMsg.Append("客户端文件地址:" + postedFile.FileName + "<br>");
strMsg.Append("上传文件的文件名:" + fileName + "<br>");
strMsg.Append("上传文件的扩展名:" + fileExtension + "<br><hr>");
/**////'可根据扩展名字的不同保存到不同的文件夹
///注意:可能要修改你的文件夹的匿名写入权限。
postedFile.SaveAs(System.Web.HttpContext.Current.Request.MapPath("images/") + fileName);
}
}
strStatus.Text = strMsg.ToString();
return true;
}
catch(System.Exception Ex)
...{
strStatus.Text = Ex.Message;
return false;
}
}
Web 窗体设计器生成的代码#region Web 窗体设计器生成的代码
override protected void OnInit(EventArgs e)
...{
//
// CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
//
InitializeComponent();
base.OnInit(e);
}
/**//// <summary>
/// 设计器支持所需的方法 - 不要使用代码编辑器修改
/// 此方法的内容。
/// </summary>
private void InitializeComponent()
...{
this.ID = "Upload";
this.Load += new System.EventHandler(this.Page_Load);
}
#endregion
}
}
注意:这样只能实现小文件的上传.遇到大文件上传,还需要改变web.config中:
<
configuration
>
< system.web >
< httpRuntime maxRequestLength = " 1048576 " executionTimeout = " 3600 " />
</ system.web >
</ configuration >
< system.web >
< httpRuntime maxRequestLength = " 1048576 " executionTimeout = " 3600 " />
</ system.web >
</ configuration >
其中:maxRequestLength:指示 ASP.NET 支持的HTTP方式上载的最大字节数。该限制可用于防止因用户将大量文件传递到该服务器而导致的拒绝服务攻击。指定的大小以 KB 为单位。默认值为 4096 KB (4 MB)。executionTimeout:指示在被 ASP.NET 自动关闭前,允许执行请求的最大秒数。在当文件超出指定的大小时,如果浏览器中会产生 DNS 错误或者出现服务不可得到的情况,也请修改以上的配置,把配置数加大。
另外,上载大文件时,还可能会收到以下错误信息:
aspnet_wp.exe (PID: 1520) 被回收,因为内存消耗超过了 460 MB(可用 RAM 的百分之 60)。
如果遇到此错误信息,请增加应用程序的 Web.config 文件的 元素中 memoryLimit 属性的值。例如:
<
configuration
>
< system.web >
< processModel memoryLimit = " 80 " />
</ system.web >
</ configuration >
< system.web >
< processModel memoryLimit = " 80 " />
</ system.web >
</ configuration >