zukucode
主にWEB関連の情報を技術メモとして発信しています。

ASP.NET アップロードされたファイルの内容を読み込み取得する

ASP.NETでアップロードされたファイルの中身を取得するには以下のようにします。

WebForm1.vb.aspx
<input type="file" id="file1" runat="server" />
WebForm1.vb
Dim bs(file1.PostedFile.ContentLength) As Byte

'bsにファイルの内容をセット
file1.PostedFile.InputStream.Read(bs, 0, bs.Length)

解説

ファイルの中身はバイト配列で取得します。

ASP.NET アップロードされたファイルのサイズを取得するで紹介したように、アップロードされたファイルのサイズを取得して、そのサイズ分のバイト配列を宣言します。

そのバイト配列にファイルの中身をInputStream.Readでセットします。

文字列で取得

アップロードしたファイルがCSVなどのテキスト形式の場合はバイト配列ではなく文字列(String)形式で扱いたいことがあります。

バイト配列を文字列に変換する方法はVB.NET バイト配列と文字列を相互変換するで紹介しています。

ファイルの内容が取得できないとき

アップロードしたファイルの内容が取得できない時は、フォームタグにenctype="multipart/form-data"を追加します。

WebForm1.vb.aspx
<form id="Form1" runat="server">
<form id="Form1" runat="server" enctype="multipart/form-data">
  <input type="file" id="file1" runat="server" />
</form>

関連記事