ASP.NET从客户端上传文件到服务器的方法原型(多文件上传)

作者(出处):百宝箱工作室发布时间:2018年5月27日 13:47:49查阅量:13

ASP.NET从客户端上传文件到服务器的方法原型(多文件上传)需要先初始化上传文件的控件,即要上传多少个附件就初始化多少个控件,然后再统一上传全部文件。

网页前端这样设计:

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default2.aspx.cs" Inherits="Admins_Default2" %>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <p>附件总量:<asp:TextBox ID="TextBox1" runat="server" Width="60px"></asp:TextBox>个
        <asp:Button ID="Button1" runat="server" Text="初始化控件" OnClick="Button1_Click" /></p>
        <asp:Panel ID="Panel1" runat="server">
        </asp:Panel>
        <br />
        <asp:Button ID="Button2" runat="server" Text="上传文件" OnClick="Button2_Click" />
    </div>
    </form>
</body>
</html>

初始化控件的代码这样写:

    protected void Button1_Click(object sender, EventArgs e)
    {
        //初始化附件的总数  
        FileUpload fj;
        //循环创建上传文件的控件  
        for (int i = 1; i <= Convert.ToInt32(TextBox1.Text); i++)
        {
            //实例化上传文件对象  
            fj = new FileUpload();
            //给对象的ID赋值  
            fj.ID = "FileUpload" + i.ToString();
            //向Panel容器动态添加控件  
            Panel1.Controls.Add(fj);
        }  
    }

上传文件的代码这样写:

    protected void Button2_Click(object sender, EventArgs e)
    {
        int k = 0;
        //声明文件名称、文件大小、文件类型、文件扩展名等几个变量  
        string f_name, f_size, f_type, f_exten;
        //使用一个变量获取到由客户端上传的文件集合  
        HttpFileCollection hfc = Request.Files;
        //遍历这个文件集合  
        for (int i = 0; i < hfc.Count; i++)
        {
            //将每一个文件实例化成可以直接访问的实体  
            HttpPostedFile hpf = hfc[i];
            //读取文件名称、文件大小、文件类型、文件扩展名
            f_name = Path.GetFileName(hpf.FileName);
            f_size = hpf.ContentLength.ToString();
            f_type = hpf.ContentType;
            f_exten = Path.GetExtension(hpf.FileName).ToLower();
            //过滤掉没有使用的控件,文件大小为0时表示该控件没有使用
            if (f_size == "0")
            {
                continue;
            }
            else
            {
                //上传同名文件不会被覆盖(采用时间戳+四位随机码标识服务器的文件名称)
                Random ran = new Random();
                string sNewName = DateTime.Now.ToString(@"yyyyMMddHHmmss") + ran.Next(1000, 9999) + f_exten;
                //将上传的文件保存到服务器指定的文件夹中  
                hpf.SaveAs(Server.MapPath("~/Files/") + sNewName);
                //将上传结果打印到网页显示  
                Response.Write("文件名称:" + f_name + "<br>" + "文件大小:" + f_size + "<br>" + "文件类型:" + f_type + "<br>");
                k++; //记录上传成功的附件数量
            }
        }
        Response.Write("成功上传附件共" + k + "个");
    }
百宝箱网络工作室  版权所有  
站长QQ:1617818397  站长E-mail:1617818397@qq.com
Powered by www.baibaox.com  Copyright © 2011-2018
点击这里给我发消息  
若本文对您有帮助,请扫码打赏,您的赞助就是最好的动力