在以前的Web应用中,上传文件是个很麻烦的事,现在有了.NET,文件上传变得轻而易举.
下面的这个例子实现了多文件上传功能.可以动态添加输入表单,上传的文件数量没有限制.代码如下:
multiupload.aspx
<%@ Page Language="vb" AutoEventWireup="false" Codebehind="MultiUpload.aspx.vb"Inherits="aspxWeb.MultiUpload" %>
<!DOCTYPE HTML PUBLIC "- >
<HTML><HEAD>
<title>多文件上传</title><s cript language="Javas cript">function addFile( )
{
var str = '
<INPUT type="file" size="50" NAME="File">'document.getElementById( 'MyFile' ).insertAdjacentHTML( "beforeEnd",str )
}
</s cript></HEAD>
<body>
<form id="form1" method="post" runat="server" enctype="multipart/form-data"><center>
<asp:Label Runat="server" ID="MyTitle"></asp:Label><P id="MyFile">
<INPUT type="file" size="50" NAME="File"></P><P>
<input type="button" value="增加( Add )" οnclick="addFile( )">
<asp:Button Runat="server" Text="上传" ID="Upload"></asp:Button>
<input οnclick="
this.form.reset( )" type="button" value="重置( ReSet )"></P></center><P align="center">
<asp:Label id="strStatus" runat="server" Font-Names="宋体" Font-Bold="True"Font-Size="9pt" Width="500px" BorderStyle="None" BorderColor="White"></asp:Label></P>
</form>
</body></HTML>
后代码:multiupload.aspx.vb
public Class MultiUploadInherits System.Web.UI.PageProtected WithEvents Upload As System.Web.UI.WebControls.ButtonProtected WithEvents MyTitle As System.Web.UI.WebControls.LabelProtected WithEvents strStatus As System.Web.UI.WebControls.Label#region " Web Form Designer Generated Code "'This call is required by the Web Form Designer.<System.Diagnostics.DebuggerStepThrough( )> Private Sub
InitializeComponent( )End SubPrivate Sub Page_Init( ByVal sender As System.Object, ByVal e As System.EventArgs ) Handles MyBase.Init'CODEGEN: This method call is required by the Web Form Designer'Do not modify it using the code editor.
InitializeComponent( )End Sub#end RegionPrivate Sub Page_Load( ByVal sender As System.Object, ByVal e As System.EventArgs ) Handles MyBase.LoadMyTitle.Text = "<h3>多文件上传</h3>"Upload.Text = "开始上传"If ( Me.IsPostBack ) Then Me.SaveImages( )End SubPrivate Function SaveImages( ) As System.Boolean'遍历File表单元素Dim files As System.Web.HttpFileCollection = System.Web.HttpContext.Current.Request.Files'状态信息Dim strMsg As New System.Text.StringBuilder( "上传的文件分别是:<hr color=red>" )Dim iFile As System.Int32TryFor iFile = 0 To files.Count - 1'检查文件扩展名字Dim postedFile As System.Web.HttpPostedFile = files( iFile )Dim fileName, fileExtension As System.StringfileName = System.IO.Path.GetFileName( postedFile.FileName )If Not ( fileName = String.Empty ) ThenfileExtension = 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 )End IfNextstrStatus.Text = strMsg.ToString( )Return TrueCatch Ex As System.ExceptionstrStatus.Text = Ex.MessageReturn FalseEnd TryEnd FunctionEnd Class
c# 版本
upload.aspx
<%@ Page language="c#" Codebehind="UpLoad.aspx.cs" AutoEventWireup="false" Inherits="WebPortal.Upload" %>
<!DOCTYPE HTML PUBLIC "- >
<HTML><HEAD>
<title>多文件上传</title><s cript language="Javas cript">function addFile( )
{
var str = '
<INPUT type="file" size="50" NAME="File">'document.getElementById( 'MyFile' ).insertAdjacentHTML( "beforeEnd",str )
}
</s cript></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 )" οnclick="addFile( )">
<input οnclick="
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
{
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 )
{
this.SaveImages( );
}
private Boolean SaveImages( )
{
strMsg.Append( "上传的文件分别是:<hr color=red>" );
try
{
for( int iFile = 0;
iFile < files.Count;
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>" );
}
}
strStatus.Text = strMsg.ToString( );
return true;
}
catch( System.Exception Ex )
{
strStatus.Text = Ex.Message;
return false;
}
}
#region Web 窗体设计器生成的代码override
protected void OnInit( EventArgs e )
{
InitializeComponent( );
base.OnInit( e );
}
private void
InitializeComponent( )
{
this.ID = "Upload";
this.Load += new System.EventHandler( this.Page_Load );
}
#endregion
}
}