ASP.NET中如何使用FileUpload文件上传控件
创始人
2024-11-28 15:02:02
0次

1.一次上传多个文件

要一次上传多个文件,我们可以像传单个文件那样对每个文件单独进行处理,除此之外,我们还可以使用HttpFileCollection类捕获从Request对象发送来的所有文件,然后再单独对每个文件进行处理,代码如下:

复制代码 代码如下:


protected void Button1_Click(object sender, EventArgs e)
{
    string filepath = Server.MapPath("upload") + "\\";
    HttpFileCollection uploadFiles = Request.Files;
    for (int i = 0; i < uploadFiles.Count; i++)
    {
        HttpPostedFile postedFile = uploadFiles[i];
        try
        {
            if (postedFile.ContentLength > 0)
            {
                Label1.Text += "文件 #" + (i + 1) + ":" + System.IO.Path.GetFileName(postedFile.FileName) + "
";
                postedFile.SaveAs(filepath + System.IO.Path.GetFileName(postedFile.FileName));
            }
        }
        catch (Exception Ex)
        {
            Label1.Text += "发生错误: " + Ex.Message;
        }
    }
}

2.上传文件类型的验证

对上传文件类型的验证既可以在客户端进行,也可以在服务器端进行。客户端可以使用验证控件来进行,不过我们今天主要说说如何在服务器端进行验证。上边cs文件中已经用GetExtension获取了文件的扩展名,只要稍加判断即可实现上传类型的验证:

复制代码 代码如下:


protected void Button1_Click(object sender, EventArgs e)
{
    if (FileUpload1.HasFile)
    {
        fileExt = System.IO.Path.GetExtension(FileUpload1.FileName);
        if (fileExt == ".rar" || fileExt == ".zip")
        {
            try
            {
                FileUpload1.SaveAs(Server.MapPath("upload") + "\\" + FileUpload1.FileName);
                Label1.Text = "客户端路径:" + FileUpload1.PostedFile.FileName + "
" +
                              "文件名:" + System.IO.Path.GetFileName(FileUpload1.FileName) + "
" +
                              "文件扩展名:" + System.IO.Path.GetExtension(FileUpload1.FileName) + "
" +
                              "文件大小:" + FileUpload1.PostedFile.ContentLength + " KB
" +
                              "文件MIME类型:" + FileUpload1.PostedFile.ContentType + "
" +
                              "保存路径:" + Server.MapPath("upload") + "\\" + FileUpload1.FileName;
            }
            catch (Exception ex)
            {
                Label1.Text = "发生错误:" + ex.Message.ToString();
            }
        }
        else
        {
            Label1.Text = "只允许上传rar、zip文件!";
        }
    }
    else
    {
        Label1.Text = "没有选择要上传的文件!";
    }
}

需要注意的是,我们不能过分依赖于客户端验证控件和服务器端上述方法的验证,因为用户只需将文件扩展名更改为允许的类型就可以避开上边的验证,这对用户来说并不是件困难的事情。

3.解决文件大小限制

在ASP.NET 2.0中FileUpload默认上传文件最大为4M,不过我们可以在web.cofig中修改相关节点来更改这个默认值,相关节点如下:

复制代码 代码如下:



   

maxRequestLength表示可上传文件的最大值,executionTimeout表示ASP.NET关闭前允许发生的上载秒数。

4."multipart/form-data"和Request共存

在ASP程序中一旦使用表单上传文件(form的enctype属性值为multipart/form-data),服务器端就不能再用Request.Form来获取表单的值,这种限制在ASP.NET 2.0中已经不存在了:

复制代码 代码如下:


protected void Button1_Click(object sender, EventArgs e)
{
    if (FileUpload1.HasFile)
    {
        try
        {
            FileUpload1.SaveAs(Server.MapPath("upload") + "\\" + FileUpload1.FileName);
            Label1.Text = "上传文件:" + FileUpload1.FileName + "
" +
                          "说明:" + Request.Form["TextBox1"];//也可以用"TextBox1.Text"来获取说明
        }
        catch (Exception ex)
        {
            Label1.Text = "发生错误:" + ex.Message.ToString();
        }
    }
    else
    {
        Label1.Text = "没有选择要上传的文件!";
    }
}

应用范例

Default.aspx:

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>





 无标题页


 
  
  
  
 


Default.aspx.cs:

using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;

public partial class _Default : System.Web.UI.Page
{
 protected void Page_Load(object sender, EventArgs e)
 {

 }
 protected void Button1_Click(object sender, EventArgs e)
 {
  String savePath = @"F:\111\";
  if (FileUpload1.HasFile)
  {
   String filename;
   filename = FileUpload1.FileName;
   savePath +=filename;
   FileUpload1.SaveAs(savePath);
   Page.Response.Write(FileUpload1.PostedFile.ContentType + FileUpload1.PostedFile.ContentLength+"
");    Page.Response.Write("");   }   else   {    Page.Response.Write("fff");   }  } }

相关内容

热门资讯

空调连续工作多久需要停机休息 空调连续工作的时间取决于多个因素,包括空调的型号、功率、使用环境和维护情况等。一般来说,空调可以连续...
空调哪个符号是除湿的 空调除湿功能通常用一个水滴形状的符号表示。不同品牌和型号的空调遥控器可能会有所差异,但一般来说,除湿...
格力空调多长时间加一次氟利昂 1、一般情况下,空调对氟利昂的使用量是非常小的,所以在空调使用了四年左右的时候再考虑加也没问题。2、...
空调用多长时间需要加氟一次 一般情况下是五年。当出现以下这几种情况时,空调才需要加氟。1、空调的室内机和室外机各有两个接口,当接...
格调生活·C标思享荟:卡萨帝在... 9月12日的郑州龙湖金融岛,夜风轻拂,灯光璀璨。“C标时刻共传奇——卡萨帝思享荟暨20周年品牌盛典郑...
品牌价值破千亿、高端份额持续领... 9月12日,“C标时刻共传奇——卡萨帝思享荟暨20周年品牌盛典郑州站”在郑州龙湖金融岛举办。2026...
空调主板坏了修800还是换新的 空调主板坏了是修还是换新,需要考虑多个因素,以下是一些建议:1. 维修成本:如果维修费用较低,比如 ...
空调开多久需要休息多长时间 问题:空调开多久需要休息多长时间回答:1、在使用空调的过程中,一般空调开7~8个小时左右需要休息2~...
中央空调多长时间清洗一次 1、一般空调开机前清洗一次即可,空调开机中间时段再清洗一次,空调关机时清洗一次,这样比较合理。2、空...
中央空调氟利昂多久加一次 看空调制热和制冷程度,很多人的观点认为氟利昂必须一年放一次,其实这个观点是错误的,理解上面有点偏差,...