0

このアプリケーションに 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ほど簡単ではないようです。

4

1 に答える 1

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.Filesinput:file

于 2012-09-06T20:14:17.973 に答える