3.02からファイルのアップロードに対応している。この機能を使えば、ユーザーはPC上のファイルをブラウザからWebサーバへ送信することができる。本稿では、ファイルのアップロードが可能なASP.NETのWebフォームについて解説する。ファイルのアップロードが可能なページは、例えば次のような画面となる。[参照]ボタンをクリックすれば、[ファイルの選択]ダイアログが開き、アップロードするファイルを選択することができる。そこで選択したファイルのパス名は、ボタンの左側にあるテキストボックスに挿入される。3.02以降)にはテキストボックスと[参照]ボタンからなるファイル・アップロードのためのコントロールが用意されており、ローカル・ファイルをWebサーバに送信することができる。以下に、ファイルのアップロードが可能なフォームを作成する手順をまとめる。<FORM>タグにenctype="multipart/form-data”属性を追加する。フォームのHTMLコードを開き、<FORM>タグにenctype属性を以下のように追加する。enctype="multipart/form-data">.........</form>enctype属性は、Webサーバへ送信されるデータ(フォームで入力されたデータ)のエンコーディング形式を指定するためのものだ。ファイル・アップロードの場合には、「multipart/form-data」の形式を指定しなくてはならない。次に、type="file"属性を付けた<INPUT>タグを、<FORM>タグ内に記述する。この<INPUT>タグは、ブラウザ上ではテキストボックスと[参照]ボタンのペアとして表示される。Fieldコントロール」を配置してもよい。併せて、<INPUT>タグにはname属性により名前を付けておく(以下の例では「userfile」という名前を付けている)。name="userfile">以上の手順に従って記述したファイル・アップロードのためのフォームは、例えば次のようになる。enctype="multipart/form-data"><P>送信するファイルを指定して、[送信]ボタンを押してください。/></P></form>ファイル・アップロードためのフォームの記述例あとは、送信を開始するためのButtonコントロールを配置すれば、そのClickイベントが発生したタイミングで、アップロードされたファイルを保存したり、読み取ったりできる。アップロードされたファイルの操作アップロードされたファイルは、ページのRequestプロパティのFilesプロパティから取得することができる。Filesプロパティは、HttpFileCollectionクラス(System.Web名前空間)のオブジェクトであり、これはアップロードされたファイルを示すHttpPostedFileクラス(System.Web名前空間)のオブジェクトを保持しているコレクションである。Filesプロパティからは、上記2のname属性で指定した名前をインデクサに用いて、次のようにしてHttpPostedFileオブジェクトを取り出すことができる。Request.Files["userfile"];HttpPostedFileオブジェクトでは、SaveAsメソッドにより指定したファイル名でファイルを保存できる。ブラウザで指定されたファイル名(フルパス)は、FileNameプロパティにより取得可能だ。InputStreamプロパティによりファイルに対するストリームを得て、直接その内容を読み出すこともできる。以下のメソッドは、アップロードされたファイルをWebサーバ上に保存する、ButtonコントロールのClickイベント・ハンドラの記述例である。Subアップロードされたファイルを保存するClickイベント・ハンドラの記述例(上:C#、下:VB.NET)この例では、アップロードされたファイルをディレクトリ「c:\UploadedFiles」に保存している。Service」)に対して書き込み権限が必要となる。ASP.NETではアップロードできるファイルのサイズが制限されている(デフォルトでは最大4MBytes)。これを変更する手順は「TIPS:[ASP.NET]構成ファイルの適用範囲を限定するには?」の中で解説している。巨大なファイルのアップロードはWebサーバのパフォーマンスに影響を及ぼす可能性があるので注意が必要だ(アップロードされたファイルはWebサーバでメモリ上に保持されるため)。ファイルのアップロード機能を利用する場合には、ファイル名の付け方や複数ユーザーによるファイルの同時書き込みについても考慮が必要となる。このため、アップロードされたファイルはファイルとして保存せずに、データベースに格納してしまうのが安全で確実な方法だ。これについては「TIPS:[ASP.NET]バイナリ・データをアップロードしてデータベースに登録するには?」で解説している。Fieldコントロールをサーバ・コントロール化して別のプロパティから取得することもできる。これについては「TIPS:[ASP.NET]アップロードされたファイルをPostedFileプロパティにより取得するには?」を参照していただきたい。メールマガジンをご購読ください。申し込みページへITmediaはアイティメディア株式会社の登録商標です。