ASP.NET中实现多文件上传

在以前的Web应用中,上传文件是个很麻烦的事,现在有了.NET,文件上传变得轻而易举.
下面的这个例子实现了多文件上传功能.可以动态添加输入表单,上传的文件数量没有限制.代码如下:
multiupload.aspx
<%@ Page Language="vb" AutoEventWireup="false" Codebehind="MultiUpload.aspx.vb"Inherits="aspxWeb.MultiUpload" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
<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 "-//W3C//DTD HTML 4.0 Transitional//EN" >
<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
{
    /// <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;
            }
        }
        #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
    }
}
 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值