アップロードされたファイルを簡単に保存する方法
ここでは ASP.NET のファイルアップロードコントロールを使ってサーバーにアップロードされたファイルを、 サーバー側で保存する方法を示します。
FileUpload コントロールを使ってアップロードしたファイルをサーバーで保存するのはとても簡単です。
アップロードされたファイルを保存するには、FileUpload コントロールの SaveAs メソッドにフルパスを渡せば OK です。
試しに上のスクリーンショットのように、ファイルアップロードコントロール (FileUpload1) とラベル (Label1) とボタン (Button1) を配置して、 ボタンをクリックしたときにファイルをアップロードして、そのファイルをサーバーに保存してみましょう。
Button1 のクリックイベントのハンドラにアップロードされたファイルを保存するコードを書きます。コードは次のようになります。
protected void Button1_Click(object sender, EventArgs e) { Label1.Text = ""; if (FileUpload1.HasFile) { string path = @"C:\temp"; string fileName = FileUpload1.PostedFile.FileName; string filePath = Path.Combine(path, fileName); FileUpload1.SaveAs(filePath); Label1.Text = "The uploaded files was saved as " + filePath; } }
上の例では、正常にアップロードできれば次のようになるはずです。
ファイルが正常に保存できない場合は、各種例外が発生するので適切に処理する必要があります。
例えば、指定したディレクトリが存在しない場合は、DirectoryNotFound が発生しますし、 書き込みができないような場合は UnauthorizedAccessException が発生したりします。
以上で、基本的なファイルの保存はできます。と言っても、上のコードはファイル名がちゃんと渡されてくることを前提としたものになってます。 実際のプログラムでは、サーバー側でファイル名を振りなおしましょう。 ファイル名をうかつに信用してしまう場合の問題点については、アップロードされるファイルのファイル名の注意点 をみてください。