FileUpload.SaveAs メソッド
アセンブリ: System.Web (system.web.dll 内)



SaveAs メソッドは FileUpload コントロールを使用して、アップロードしたファイルの内容を Web サーバー上の指定したパスに保存します。
FileUpload コントロールは、アップロードするファイルをユーザーが選択した後はファイルをサーバーに自動的に保存しません。指定したファイルをユーザーが送信できるようにするコントロールまたはメカニズムを明示的に指定する必要があります。たとえば、ユーザーがクリックするとファイルがアップロードされるようなボタンを指定します。指定したファイルを保存するために記述したコードでは、サーバー上の指定したパスにファイルの内容を保存する SaveAs メソッドを呼び出す必要があります。通常、SaveAs メソッドは、サーバーへのポストバックを発生させるイベントの、イベント処理メソッドで呼び出します。たとえば、ファイルを送信するボタンを指定した場合、サーバーにファイルを保存するコードをクリック イベントのイベント処理メソッド内に配置します。
SaveAs メソッドを呼び出す場合は、アップロードしたファイルの保存先とするサーバーのディレクトリへの完全パスを指定する必要があります。アプリケーション コードでパスを明示的に指定しない場合は、ユーザーがファイルをアップロードしようとすると、HttpException 例外がスローされます。この動作によって、アップロードするファイルの保存先パスをユーザーが指定できないようにして、サーバー上のファイルを安全に保持できます。
SaveAs メソッドを呼び出す前に、HasFile プロパティを使用して、アップロードするファイルが FileUpload コントロールに格納されていることを確認する必要があります。HasFile によって true が返される場合、SaveAs メソッドを呼び出します。false が返される場合、コントロールにファイルが格納されていないことを示すメッセージがユーザーに表示されます。ファイルが存在することを確認するエラー処理コードを指定していない場合、存在しないファイルを保存しようとすると、HttpException 例外がスローされます。
SaveAs 呼び出しを機能させるには、サーバー上のディレクトリに対する書き込みアクセスを ASP.NET アプリケーションに設定する必要があります。アプリケーションが書き込みアクセスを取得するには、2 つの方法があります。アプリケーションを実行中のアカウントに対しては、アップロードされたファイルの保存先となるディレクトリでの書き込みアクセスを明示的に許可できます。また、ASP.NET アプリケーションに許可している信頼レベルを上げることもできます。アプリケーションの実行ディレクトリに対する書き込みアクセスを取得するには、信頼レベルが AspNetHostingPermissionLevel.Medium 値に設定された AspNetHostingPermission オブジェクトがアプリケーションに許可されている必要があります。信頼レベルを上げると、アプリケーションからサーバー上のリソースへのアクセス権限が拡大します。ただし、アプリケーションの制御を取得した悪意のあるユーザーもこの高い信頼レベルでアプリケーションを実行できるので、この方法は安全ではありません。アプリケーションの実行に必要な最小限の特権を持つユーザーのコンテキストで ASP.NET アプリケーションを実行することをお勧めします。ASP.NET アプリケーションのセキュリティの詳細については、「Web アプリケーションのセキュリティに関する基本的な対策」と「ASP.NET 信頼レベルとポリシー ファイル」を参照してください。

エラー チェックを実行する FileUpload コントロールを作成する方法を次のコード例に示します。ファイルを保存する前に、HasFile メソッドを呼び出して、アップロードするファイルが実際に存在することを確認します。さらに、File.Exists メソッドを呼び出して、同じ名前のファイルがパス内に既に存在するかどうかを確認します。存在する場合は、アップロードするファイルの名前の前に数字を追加してから、SaveAs メソッドを呼び出します。これによって、既存のファイルが上書きされないようにします。
<%@ Page Language="VB" %> <html> <head> <script runat="server"> Sub UploadButton_Click(ByVal sender As Object, ByVal e As System.EventArgs) ' Before attempting to save the file, verify ' that the FileUpload control contains a file. If (FileUpload1.HasFile) Then ' Call a helper method routine to save the file. SaveFile(FileUpload1.PostedFile) Else ' Notify the user that a file was not uploaded. UploadStatusLabel.Text = "You did not specify a file to upload." End If End Sub Sub SaveFile(ByVal file As HttpPostedFile) ' Specify the path to save the uploaded file to. Dim savePath As String = "c:\temp\uploads\" ' Get the name of the file to upload. Dim fileName As String = FileUpload1.FileName ' Create the path and file name to check for duplicates. Dim pathToCheck As String = savePath + fileName ' Create a temporary file name to use for checking duplicates. Dim tempfileName As String ' Check to see if a file already exists with the ' same name as the file to upload. If (System.IO.File.Exists(pathToCheck)) Then Dim counter As Integer = 2 While (System.IO.File.Exists(pathToCheck)) ' If a file with this name already exists, ' prefix the filename with a number. tempfileName = counter.ToString() + fileName pathToCheck = savePath + tempfileName counter = counter + 1 End While fileName = tempfileName ' Notify the user that the file name was changed. UploadStatusLabel.Text = "A file with the same name already exists." + "<br>" + _ "Your file was saved as " + fileName Else ' Notify the user that the file was saved successfully. UploadStatusLabel.Text = "Your file was uploaded successfully." End If ' Append the name of the file to upload to the path. savePath += fileName ' Call the SaveAs method to save the uploaded ' file to the specified directory. FileUpload1.SaveAs(savePath) End Sub </script> </head> <body> <h3>FileUpload.SaveAs Method Example</h3> <form ID="Form1" runat="server"> <h4>Select a file to upload:</h4> <asp:FileUpload id="FileUpload1" runat="server"> </asp:FileUpload> <br><br> <asp:Button id="UploadButton" Text="Upload file" OnClick="UploadButton_Click" runat="server"> </asp:Button> <hr /> <asp:Label id="UploadStatusLabel" runat="server"> </asp:Label> </form> </body> </html>

Windows 98, Windows 2000 SP4, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
開発プラットフォームの中には、.NET Framework によってサポートされていないバージョンがあります。サポートされているバージョンについては、「システム要件」を参照してください。


Weblioに収録されているすべての辞書からFileUpload.SaveAs メソッドを検索する場合は、下記のリンクをクリックしてください。

- FileUpload.SaveAs メソッドのページへのリンク