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

Asp.net 如何从每个输入文件中获取提交的文件数,asp.net,webforms,Asp.net,Webforms,客户端有两个输入文件,需要指定每个输入文件提交的文件数。我可以得到总文件数,但我需要得到多少文件,每个输入文件提交 HTML: 并通过ASP.NETWeb表单按钮控件处理上传过程 详情如下: protected void btnUploadClick(object sender, EventArgs e) { DataTable dt = new DataTable(); dt.Columns.Add("Id", typeof(int)); dt

客户端有两个输入文件,需要指定每个输入文件提交的文件数。我可以得到总文件数,但我需要得到多少文件,每个输入文件提交

HTML:


并通过ASP.NETWeb表单按钮控件处理上传过程 详情如下:

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()
}
protectedvoid btnUploadClick(对象发送方,事件参数e)
{
DataTable dt=新的DataTable();
添加(“Id”,typeof(int));
添加(“字节”,typeof(byte[]);
添加(“ImgNames”,typeof(string));
添加(“ImgType”,typeof(string));
添加(“成员”,类型(int));
//int firstfilescont=Request.Files[“myFile”].count;无法执行此操作
//int secondfilescont=Request.Files[“myFile2”].count;无法执行此操作,因此我需要
//获取每个输入文件提交的文件数
对于(int i=0;i0)
{
字符串fType=Request.Files[i].ContentType.Split('/')[1];
字符串fName=Path.GetFileName(Request.Files[i].FileName);
byte[]bytes=新的二进制读取器(Request.Files[i].InputStream).ReadBytes(Request.Files[i].ContentLength);
Add(Convert.ToInt32(hfAppID.Value)、bytes、fName、,
fType,Convert.ToInt32(ViewState[“memberId”]);
}
}
字符串outputStr=UpdateAttach()
}

看起来像是请求。文件可能是所有文件的列表,而不管它们来自什么输入。如果使用
asp:FileUpload
控件而不是普通输入,然后,您可以访问服务器端的每个输入,并且应该能够使用
myFile.PostedFiles.Count
myFile2.PostedFiles.Count
来获取每个输入中的文件数。

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

var v = Request.Files.Keys;
这将返回我在页面中要提交的输入文件的ID。因此,我可以使用下面的
foreach
循环遍历每个输入文件

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

是的,我想是这样,但问题是图像在选择后正在调整大小,所以我在从div调整大小后使用隐藏字段收集它们,而不是从表单提交体,就像我上面所说的,你认为发布的文件数组包含调整大小后的图像还是之前的图像?我调整每个图像的大小并将其附加到div中,所以我真的不知道它提交的大小是否调整了,这就是为什么,因为我有图像要调整,pdf的,我不能调整你已经失去了我现在,我没有按照你的描述,你正在做什么来调整他们的大小。但是回到你文章中的核心问题:要在服务器端获取每个输入上要使用的文件的数量,该输入需要运行at=server以便服务器可以看到它,或者你需要使用javascript或其他东西在前端获取该数字,并将其保存到服务器可以在回发上看到的某个字段。如果你对如何在更广泛的意义上做你想做的事情有不同的问题,你可能想单独发表一篇文章,或者用更全面的代码示例更新这篇文章
foreach (string key in Request.Files)
{
    //processing
}