ASP.NET中实现多文件上传的实例程序代码

在以前的Web应用中,上传文件是个很麻烦的事,现在有了.NET,文件上传变得轻而易举。下面的这个例子实现了多文件上传功能。

可以动态添加输入表单,上传的文件数量没有限制。代码如下:

multiupload.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 >
        
< 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 ;
      }
    }
  
#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
  }
}

 

 

 

你可能感兴趣的:(asp.net)