获取与其输入名称标签asp.net关联的文件的byte []

时间:2012-09-06 20:02:42

标签: c# asp.net forms post

我有N个文件正在上传到此应用程序。每个的名称都是唯一的,但我不知道如何根据某个名称获取字节数组。

<input type="file" name="file1" />

并且在服务器上会有类似

的内容
byte[] data = Request.Files["file1"];  //doesnt work, as i believe it wont take a string, but only an int index

当我查找这些解决方案时,FileName并不是那么关心,因此Files [0] .FileName不会有帮助,也不会编制索引。我希望能够根据上面的名称引用内容。

我不知道在哪里可以找到它。正在寻找MSDN并在这里。

我有很多文件,每个文件都有一个唯一的名称....然后根据唯一的名称,它实际上包含一些额外的信息,将告诉我如何处理它。

它看起来并不像在PHP中那么容易。

1 个答案:

答案 0 :(得分:1)

这样的事情:

  byte[] buffer = new byte[Request.Files["file1"].ContentLength];
  Request.Files["file1"].InputStream.Read(buffer,0,buffer.Length);

迭代所有这些:

foreach (var item in Request.Files.AllKeys)
{
     byte[] buffer = new byte[Request.Files[item].ContentLength];
     Request.Files[item].InputStream.Read(buffer, 0, buffer.Length);    

     //do something with the byte[] - buffer 
}

更新 有意思...我刚刚运行了一个测试,如果我将runat="server"设置为文件元素,它只会看到填充的Request.Files集合:<input type="file" runat="server" name="file1" />

更新2 :如果您希望能够使用常规html enctype="multipart/form-data"元素浏览Request.Files集合,请务必在表单上设置input:file