PHP群:95885625 Hbuilder+MUI群:81989597 站长QQ:634381967
    您现在的位置: 首页 > 开发编程 > ASP.NET教程 > 正文

    ASP.NET实现多文件上传

    作者:w634381967来源:网络浏览:时间:2020-09-30 00:07:50我要评论
    导读:Microsoft NET Framework 中没有任何内置功能使您可以从一个 ASP NET 页上载多个文件。然而,只需要少量工作,您就可以像过去使用
    Microsoft .NET Framework 中没有任何内置功能使您可以从一个 ASP.NET 页上载多个文件。然而,只需要少量工作,您就可以像过去使用 .NET 1.x 那样完成此任务。

    方法是将 System.IO 类导入到 ASP.NET 页中,然后使用 HttpFileCollection 类捕获通过 Request 对象发送来的所有文件。该方法使您可以从一个页面上载所需数量的文件。

    如果需要,您完全可以分别处理该页上的每个 FileUpload 控件,如清单 1 所示。

    清单 1. 分别处理每个 FileUpload 控件

    if (FileUpload1.HasFile) {
       // Handle file
    }

    if (FileUpload2.HasFile) {
       // Handle file
    }
    该方法有效,但可能存在这种情况:您要使用 HttpFileCollection 类处理文件,特别是在处理动态生成的服务器控件列表时。

    针对这种情况的示例,您可以生成一个 ASP.NET 页,该页有三个 FileUpload 控件和一个 Submit 按钮(使用 Button 控件)。用户单击 Submit 按钮并且文件被发布到服务器之后,隐藏的代码将文件保存到服务器上的特定位置。保存文件后,在 ASP.NET 页上显示已发布的文件信息。

    清单 2. 将多个文件上载到服务器 


     
    复制代码 代码如下:
    protected void Button1_Click(object sender, EventArgs e)
    {
       string filepath = "C:\\Uploads";
       HttpFileCollection uploadedFiles = Request.Files;
        
       for (int i = 0; i < uploadedFiles.Count; i++)
       {   
          HttpPostedFile userPostedFile = uploadedFiles[i];
        
          try
          {   
             if (userPostedFile.ContentLength > 0 )
             {
                Label1.Text += "File #" + (i+1) +
                   "";
                Label1.Text += "File Content Type: " +
                   userPostedFile.ContentType + "";
                Label1.Text += "File Size: " +
                   userPostedFile.ContentLength + "kb";
                Label1.Text += "File Name: " +
                   userPostedFile.FileName + "";
        
                userPostedFile.SaveAs(filepath + "\\" +
                   System.IO.Path.GetFileName(userPostedFile.FileName));
        
                Label1.Text += "Location where saved: " +
                   filepath + "\\" +
                   System.IO.Path.GetFileName(userPostedFile.FileName) +
                   "
    ";
             }   
          }
          catch (Exception Ex)
          {   
             Label1.Text += "Error: " + Ex.Message;   
          }   
       }   
    }

    最终用户最多可以选择四个文件,然后单击 Upload Files 按钮,该按钮会初始化 Button1_Click 事件。使用 HttpFileCollection 类和 Request.Files 属性使您可以控制从该页上载的所有文件。当这些文件处于此状态时,您可以对它们进行任何操作。在本例中,检查文件的属性并将它们输出到屏幕上。最后,这些文件保存到服务器根目录的 Uploads 文件夹中。该操作的结果如图 1 所示。
    ASP.NET实现多文件上传

    图 1. 一次将一个 ASP.NET 页上的四个文件上载到服务器
    您可能已经注意到,该示例有趣的一点是,文件输入文本框的状态没有通过回发进行保存。在 ASP.NET 中,无法保存文件输入文本框的状态,因为这么做可能会引发安全风险。
    转载请注明(B5教程网)原文链接:https://b5.mxunkeji.com/content-11-1124-1.html
    相关热词搜索: asp net多文件上传