FileUpload Web サーバー コントロールの概要
更新 : 2007 年 11 月
FileUpload コントロールを使用すると、コンピュータからサーバーにファイルを送信する方法をユーザーに提供できます。
このトピックの内容は次のとおりです。
機能
背景
コード例
クラス参照
機能
FileUpload コントロールを使用すると、以下の処理を実行できます。
サーバーの特定の場所に格納したファイルをユーザーがアップロードできるようにします。
アップロードできるファイルのサイズを制限します。
ファイルを格納する前に、アップロード済みのファイルのプロパティを調べます。
ページのトップへ
背景
FileUpload コントロールを使用すると、画像、テキスト ファイル、またはその他のファイルをユーザーがアップロードできます。FileUpload コントロールは、ユーザーがサーバーにアップロードするファイルの名前を入力できるテキスト ボックスを表示します。このコントロールは、ファイルを指定するダイアログ ボックスを表示する [参照] ボタンも表示します(表示されるダイアログ ボックスは、ユーザーが使用しているコンピュータのオペレーティング システムによって異なります)。セキュリティ上の理由から、ファイル名を FileUpload コントロールにあらかじめロードすることはできません。
アップロードされたファイルの処理
ユーザーがアップロードするファイルを選択してページを送信すると、ファイルは要求の一部としてアップロードされます。ファイルはそのままサーバーのメモリにキャッシュされます。ファイルのアップロードが終了すると、ページ コードが実行されます。
アップロードされたファイルには次の方法でアクセスできます。
FileUpload コントロールの FileBytes プロパティに公開されるバイト配列として。
FileContent プロパティに公開されるストリームとして。
PostedFile プロパティの HttpPostedFile 型のオブジェクトとして。PostedFile オブジェクトは、アップロードされたファイルの情報を提供する ContentType プロパティ、ContentLength プロパティなどのプロパティを公開します。
コードが実行されると、名前、サイズ、MIME 型などのファイル特性を調べて、これを保存できます。ファイルはバイト配列またはストリームとして操作できます。また、FileUpload コントロールと HttpPostedFile オブジェクトは、どちらもファイルをディスクに書き込む SaveAs メソッドをサポートしています。
アップロードされたファイルを保存できる場所には、本来制限はありません。ただし、ファイルを保存するには、ASP.NET プロセスが、指定した場所にファイルを作成するアクセス許可を持つ必要があります。さらに、安全策として、ファイルの保存に (相対パスではなく) 絶対パスを必要とするようにアプリケーションを構成します。httpRuntime 構成要素の requireRootedSaveAsPath 属性が true (既定値) に設定されている場合、アップロードされたファイルを保存するときに絶対パスを指定する必要があります。
メモ : |
---|
HttpServerUtility クラスの MapPath メソッドを使用し、このメソッドにアプリケーションのルート フォルダを表すティルダ (~) 演算子を渡すことで、アプリケーションのルートに基づいた絶対パスを作成できます。詳細については、「ASP.NET Web サイトのパス」を参照してください。 |
アップロードできる最大のファイル サイズは MaxRequestLength 構成設定の値によって異なります。ユーザーに許可されている最大サイズよりも大きいファイルをアップロードしようとすると、アップロードは失敗します。
部分ページ更新での FileUpload コントロールの使用方法
FileUpload コントロールは、ポストバックの状況で使用されるように設計されています。部分ページ レンダリング中に非同期のポストバックの状況で使用されることは、想定されていません。UpdatePanel コントロール内で FileUpload コントロールを使用するときは、パネルの PostBackTrigger オブジェクトであるコントロールを使用してファイルをアップロードする必要があります。UpdatePanel コントロールは、ポストバックでページ全体を更新するのではなく、選択されたページの領域を更新するために使用されます。詳細については、「UpdatePanel コントロールの概要」および「部分ページ レンダリングの概要」を参照してください。
セキュリティと FileUpload コントロール
FileUpload コントロールを使用すると、ユーザーはスクリプト ファイルや実行可能ファイルなど、悪意のあるファイルであってもアップロードできます。ユーザーがアップロードできるファイルを事前に制限することはできません。ユーザーがアップロードできるファイルの種類を制限する場合は、ファイルがアップロードされた後でファイルの特性 (ファイル名の拡張子、ファイルの ContentType プロパティの値など) を調べる必要があります。
メモ : |
---|
ページが送信される前に、クライアント スクリプトを使用して、ユーザーがテキスト ボックスに入力したファイル名を調べることができます。ただし、クライアント側でのファイル名のチェックは有益ですが、実行可能ファイルなど、安全でない種類のファイルをユーザーが実際にアップロードできないということが保証されるわけではありません。 |
コード例
方法 : FileUpload Web サーバー コントロールを使用してファイルをアップロードする
ページのトップへ
クラス参照
FileUpload コントロールに関連するクラスの一覧を次の表に示します。
メンバ |
説明 |
---|---|
FileUpload コントロールのメイン クラスです。 |
ページのトップへ