如何从每个输入文件中获取提交的文件数

How to get submitted files count from each input file

我在客户端有两个输入文件,我需要指定每个输入文件提交的文件数。我能够获得文件总数,但我需要获得每个输入文件提交的文件数量

HTML:

   <input  type="file" id="myFile" name="myFile"   multiple="multiple" />
   <input  type="file" id="myFile2" name="myFile2"   multiple="multiple" />
                               

我通过 ASP.NET Web 表单按钮控件处理上传过程 如下:

protected void btnUploadClick(object sender, EventArgs e)
{

    DataTable dt = new DataTable();
    dt.Columns.Add("Id", typeof(int));
    dt.Columns.Add("Bytes", typeof(byte[]));
    dt.Columns.Add("ImgNames", typeof(string));
    dt.Columns.Add("ImgType", typeof(string));
    dt.Columns.Add("Member", typeof(int));

   // int firstFilesCount = Request.Files["myFile"].count; unable to do this 
   // int secondFilesCount = Request.Files["myFile2"].count; unable to do this so i need to 
   //get the count of files submitted by each input file
    
    for (int i = 0; i < Request.Files.Count; i++)
    {
        if (Request.Files[i] != null && Request.Files[i].ContentLength > 0)
        {

            string fType = Request.Files[i].ContentType.Split('/')[1];
            string fName = Path.GetFileName(Request.Files[i].FileName);
            byte[] bytes = new BinaryReader(Request.Files[i].InputStream).ReadBytes(Request.Files[i].ContentLength);
            dt.Rows.Add(Convert.ToInt32(hfAppID.Value), bytes, fName,
                fType, Convert.ToInt32(ViewState["memberId"]));
        }
    }
    string outputStr = UpdateAttach()
}

似乎 Request.Files 可能是所有文件的列表,无论它们来自什么输入。如果您使用 asp:FileUpload 控件而不是普通输入,则您可以访问服务器端的每个输入并且应该能够使用 myFile.PostedFiles.CountmyFile2.PostedFiles.Count 来获取文件的数量每一个。

最后,我可以使用以下代码确定哪个文件来自哪个输入

var v = Request.Files.Keys;

这将 return 我在提交页面中使用的输入文件的 ID。所以我可以通过使用 foreach 循环遍历每个输入文件,如下所示

foreach (string key in Request.Files)
{
    //processing
}