在ASP.NET中实现多文件上传

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 >
        
< 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 窗体设计器生成的代码
  }

}

 

 

注意:这样只能实现小文件的上传.遇到大文件上传,还需要改变web.config中:

 

< 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 >

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值