FileUpload.SaveAs(String) FileUpload.SaveAs(String) FileUpload.SaveAs(String) FileUpload.SaveAs(String) Method

定義

アップロードしたファイルの内容を Web サーバー上の指定したパスに保存します。Saves the contents of an uploaded file to a specified path on the Web server.

public:
 void SaveAs(System::String ^ filename);
public void SaveAs (string filename);
member this.SaveAs : string -> unit
Public Sub SaveAs (filename As String)

パラメーター

filename
String String String String

アップロードしたファイルの保存先となるサーバー上の場所の完全パスを示す文字列。A string that specifies the full path of the location of the server on which to save the uploaded file.

例外

filename が完全パスではありません。filename is not a full path.

次の例では、作成する方法、FileUploadエラー チェックを実行するコントロール。The following example demonstrates how to create a FileUpload control that performs error checking. ファイルを保存する前に、HasFileメソッドが呼び出され、アップロードするファイルが存在することを確認します。Before the file is saved, the HasFile method is called to verify that a file to upload exists. さらに、File.Existsパスに同じ名前が既にファイルが存在するかどうかを確認するメソッドが呼び出されます。In addition, the File.Exists method is called to check whether a file that has the same name already exists in the path. 前に、の番号をアップロードするファイルの名前を付ける場合は、SaveAsメソッドが呼び出されます。If it does, the name of the file to upload is prefixed with a number before the SaveAs method is called. これは、既存のファイルが上書きすることを防ぎます。This prevents the existing file from being overwritten.

<%@ Page Language="C#" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
    <title>FileUpload.SaveAs Method Example</title>
<script runat="server">
        
    protected void  UploadButton_Click(object sender, EventArgs e)
    {
        // Before attempting to save the file, verify
        // that the FileUpload control contains a file.
        if (FileUpload1.HasFile) 
          // 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.";
    }
            
      void SaveFile(HttpPostedFile file)
      {            
        // Specify the path to save the uploaded file to.
        string savePath = "c:\\temp\\uploads\\";
            
        // Get the name of the file to upload.
        string fileName = FileUpload1.FileName;
            
        // Create the path and file name to check for duplicates.
        string pathToCheck = savePath + fileName;
        
        // Create a temporary file name to use for checking duplicates.
        string tempfileName = "";
            
        // Check to see if a file already exists with the
        // same name as the file to upload.        
        if (System.IO.File.Exists(pathToCheck)) 
        {
          int counter = 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 ++;
          }
          
          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.";
        }

        // 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);
            
      }
        
</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>
<%@ Page Language="VB" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
    <title>FileUpload.SaveAs Method Example</title>
<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>

注釈

SaveAsメソッド、Web サーバーで指定されたパスにアップロードされたファイルの内容を保存します。The SaveAs method saves the contents of an uploaded file to a specified path on the Web server.

FileUploadコントロールは自動的にファイルを保存できません、サーバーに、ユーザーがアップロードするファイルを選択後します。The FileUpload control does not automatically save a file to the server after the user selects the file to upload. コントロールまたはユーザーが、指定したファイルを送信できるようにするためのメカニズムを明示的に指定する必要があります。You must explicitly provide a control or mechanism to allow the user to submit the specified file. たとえば、ファイルをアップロードして、ユーザーがクリックしたボタンを行うことができます。For example, you can provide a button that the user clicks to upload the file. 指定したファイルを保存するために作成コードを呼び出す必要があります、SaveAsメソッドで、サーバー上の指定されたパスにファイルの内容を保存します。The code that you write to save the specified file should call the SaveAs method, which saves the contents of a file to a specified path on the server. 通常、SaveAsメソッドは、サーバーへのポストバックを発生させるイベントのイベント処理メソッドで呼び出されます。Typically, the SaveAs method is called in an event-handling method for an event that raises a post back to the server. たとえば、ファイルを送信するボタンを指定する場合、サーバーにファイルを保存するコードでしたし内に含めること、クリック イベントのイベント処理メソッド。For example, if you provide a button to submit a file, the code to save the file to the server could then be included inside the event-handling method for the click event.

呼び出すと、SaveAsメソッドでは、サーバー上でアップロードされたファイルを保存するディレクトリの完全なパスを指定する必要があります。When you call the SaveAs method, you must specify the full path of the directory on the server in which to save the uploaded file. アプリケーション コードでパスを明示的に指定しない場合、HttpExceptionユーザーがファイルをアップロードしようとしたときに例外がスローされます。If you do not explicitly specify a path in your application code, an HttpException exception is thrown when a user attempts to upload a file. この動作で、アップロードするファイルを保存するパスを指定するユーザーを許可しないことによって、サーバー上のファイルを安全に保持できます。This behavior helps keep the files on the server secure, by not allowing users to specify a path in which to save the files that they upload.

呼び出しの前に、SaveAsメソッドを使用する必要がある、HasFileことを確認するプロパティ、FileUploadコントロールにアップロードするファイルが含まれています。Before calling the SaveAs method, you should use the HasFile property to verify that the FileUpload control contains a file to upload. 場合、HasFile返しますtrueを呼び出し、SaveAsメソッド。If the HasFile returns true, call the SaveAs method. 返された場合falseコントロールにファイルが含まれていないユーザーを示すメッセージを表示します。If it returns false, display a message to the user indicating that the control does not contain a file. 存在しないファイルを保存しようとスロー ファイルが存在することを確認するエラー処理コードを指定しない場合、HttpException例外。If you do not provide error-handling code to verify that a file exists, an attempt to save a nonexistent file throws an HttpException exception.

呼び出すのため、SaveAsするのには、ASP.NET アプリケーションは、サーバーでディレクトリへの書き込みアクセスを必要する必要があります。For a call to the SaveAs to work, the ASP.NET application must have write access to the directory on the server. これには、アプリケーションが書き込みアクセス権を取得できます 2 つの方法があります。There are two ways that the application can get write access. アプリケーションが実行されている、アップロードされたファイルを保存するディレクトリのアカウントへの書き込みアクセスを明示的に付与することができます。You can explicitly grant write access to the account under which the application is running, in the directory in which the uploaded files will be saved. または、ASP.NET アプリケーションに付与される信頼のレベルを上げることができます。Alternatively, you can increase the level of trust that is granted to the ASP.NET application. アプリケーションの実行中のディレクトリへの書き込みアクセスを取得する、アプリケーションを許可する必要があります、AspNetHostingPermission信頼レベルに設定を持つオブジェクト、AspNetHostingPermissionLevel.Medium値。To get write access to the executing directory for the application, the application must be granted the AspNetHostingPermission object with the trust level set to the AspNetHostingPermissionLevel.Medium value. 信頼のレベルを増やすと、サーバー上のリソースへのアプリケーションのアクセスが向上します。Increasing the level of trust increases the application's access to resources on the server. アプリケーションの制御を取得した悪意のあるユーザーがこの高いレベルの信頼で実行することもあるため、安全なアプローチではないことに注意してください。Note that this is not a secure approach, because a malicious user who gains control of your application will also be able to run under this higher level of trust. アプリケーションを実行するために必要な最小限の特権を持つユーザーのコンテキストで ASP.NET アプリケーションを実行することをお勧めします。It is a best practice to run an ASP.NET application in the context of a user who has the minimum privileges that are required for the application to run. ASP.NET アプリケーションでのセキュリティの詳細については、次を参照してください。 Web アプリケーションの基本的なセキュリティ プラクティスASP.NET Trust Levels and Policy Filesします。For more information about security in ASP.NET applications, see Basic Security Practices for Web Applications and ASP.NET Trust Levels and Policy Files.

適用対象

こちらもご覧ください