.NET TIPS [ASP.NET]アプリケーションからASP.NETサイトにファイルをアップロードするには?デジタルアドバンテージ 遠藤 孝信2005/07/08 |
|
|
クライアント・アプリケーションからASP.NETで構築されたWebサイトにファイルを転送(アップロード)したい場合、ASP.NETのファイル・アップロード機能(ファイルのアップロードを受け取る機能)と、WebClientクラス(System.Net名前空間)のUploadFileメソッドを使えば簡単に実装できる。
ファイルのアップロードを行うクライアント・アプリケーション
まず、クライアント側では次のようなプログラムを用意する。このプログラムはWebClientクラスのUploadFileメソッドを使って、指定されたURLに指定されたファイルをアップロードする(アップロードにはHTTPプロトコルのPOSTメソッドが使用される)。
|
|
POSTメソッドによりファイルのアップロードを行うC#のプログラム(uploader.cs) | |
|
|
POSTメソッドによりファイルのアップロードを行うVB.NETのプログラム(uploader.vb) | |
ここでは次項に示すASP.NETページのURLが「http://localhost/upload.aspx」であると仮定している。
UploadFileメソッドの戻り値は、指定されたURLのページが返すデータをbyte配列として返す。このプログラムではそれを文字列に変換し表示しているが、本稿の場合、この値は次に解説するようにアップロードされたファイルのサイズとなる。
アップロードされたファイルを受け取るASP.NETページ
サーバ側にはASP.NETのページとして次のような内容のaspxファイルを用意する(本稿の場合、c:\Inetpub\wwwrootディレクトリ配下にファイル名を「upload.aspx」として配置する)。
|
|
アップロードされたファイルを受け取るC#のASP.NETページ(upload_cs.aspx) | |
|
|
アップロードされたファイルを受け取るVB.NETのASP.NETページ(upload_vb.aspx) | |
このASP.NETページはクライアント・プログラムからのみアクセスされるので、通常のWebフォームは持っていない。ページがアクセスされるとPage_Loadメソッドが呼び出されて実行されるだけである。
Page_Loadメソッドでは、アップロードされたファイルを取得して、ファイルに保存している。この処理はブラウザからアップロードされたファイルを受け取る場合の処理とほぼ同じである。このため、詳細については「TIPS:[ASP.NET]ブラウザからファイルをアップロードできるようにするには?」を参考にしていただきたい。
そのTIPSでも解説しているように、ページのRequestプロパティのFilesプロパティは、アップロードされたファイルを示すHttpPostedFileクラス(System.Web名前空間)のオブジェクトのコレクションである。複数のファイルが同時に(1回のアクセスで)アップロードされた場合には、このコレクションには複数のHttpPostedFileオブジェクトが含まれることになるが、今回の場合は1つだけと分かっているので、「Request.Files[0]」によりアップロードされたファイルのHttpPostedFileオブジェクトを取得することができる。
Page_Loadメソッドの最後では、アップロードされたファイルの長さをHttpPostedFileオブジェクトのContentLengthプロパティにより取得して、Rsponse.Writeメソッドによりページの出力としている。上記のクライアント・プログラムで表示しているものはこの値である。この情報はファイルが正しくアップロードされたかどうかを判断するのに利用できる。
カテゴリ:Webフォーム 処理対象:ファイル・アップロード カテゴリ:クラス・ライブラリ 処理対象:ネットワーク 使用ライブラリ:WebClientクラス(System.Net名前空間) 使用ライブラリ:HttpPostedFileクラス(System.Web名前空間) 関連TIPS:[ASP.NET]ブラウザからファイルをアップロードできるようにするには? |
「.NET TIPS」 |
- 第2回 簡潔なコーディングのために (2017/7/26)
ラムダ式で記述できるメンバの増加、throw式、out変数、タプルなど、C# 7には以前よりもコードを簡潔に記述できるような機能が導入されている - 第1回 Visual Studio Codeデバッグの基礎知識 (2017/7/21)
Node.jsプログラムをデバッグしながら、Visual Studio Codeに統合されているデバッグ機能の基本の「キ」をマスターしよう - 第1回 明瞭なコーディングのために (2017/7/19)
C# 7で追加された新機能の中から、「数値リテラル構文の改善」と「ローカル関数」を紹介する。これらは分かりやすいコードを記述するのに使える - Presentation Translator (2017/7/18)
Presentation TranslatorはPowerPoint用のアドイン。プレゼンテーション時の字幕の付加や、多言語での質疑応答、スライドの翻訳を行える
|
|