다음을 통해 공유


FileUpload.SaveAs(String) 메서드

정의

업로드된 파일의 내용을 웹 서버의 지정된 경로에 저장합니다.

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

매개 변수

filename
String

업로드된 파일을 저장할 서버의 위치에 대한 전체 경로를 지정하는 문자열입니다.

예외

filename이 전체 경로가 아닌 경우

예제

다음 예제에서는 만드는 방법을 보여 줍니다는 FileUpload 오류 검사를 수행 하는 컨트롤입니다. 파일을 저장 하기 전에 HasFile 메서드는 업로드할 파일이 있는지 확인 합니다. 또한는 File.Exists 메서드를 호출 하는 경로에 이미 동일한 이름을 가진 파일이 있는지 확인 합니다. 앞에 있는 번호 업로드할 파일의 이름 앞에 경우는 SaveAs 메서드가 호출 됩니다. 이 기존 파일 덮어쓰지 못하도록 방지 합니다.

<%@ 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 메서드 웹 서버에 업로드 된 파일의 내용이 지정된 된 경로에 저장 합니다.

FileUpload 컨트롤이 자동으로를 저장 하지 않습니다 파일 서버 사용자가 업로드할 파일을 선택 합니다. 명시적으로 제어 또는 사용자가 지정된 된 파일을 제출 하도록 허용 하는 메커니즘을 제공 해야 합니다. 예를 들어 사용자가 파일을 업로드 하는 단추를 제공할 수 있습니다. 지정된 된 파일을 저장 하려면 작성 하는 코드를 호출 해야 합니다 SaveAs 메서드를 서버에서 파일의 내용이 지정된 된 경로에 저장 합니다. 일반적으로 SaveAs 서버에 다시 게시를 발생 시키는 이벤트에 대 한 이벤트 처리 메서드에서 호출 됩니다. 예를 들어 파일을 전송 하는 단추를 제공 하는 경우 서버에 파일을 저장 하는 코드 click 이벤트에 대 한 이벤트 처리 메서드 내부에 포함할 수 있습니다.

호출 하는 경우는 SaveAs 메서드를 서버에서 업로드 된 파일을 저장할 디렉터리의 전체 경로 지정 해야 합니다. 애플리케이션 코드에서 경로 명시적으로 지정 하지 않으면 경우는 HttpException 사용자가 파일을 업로드 하려고 할 때 예외가 throw 됩니다. 이 문제는 서버에서 파일을 업로드 하는 파일을 저장할 경로 지정 하는 사용자를 허용 하지 않도록 보안을 유지 하기 하는 데 도움이 됩니다.

호출 하기 전에 합니다 SaveAs 메서드를 사용할지를 HasFile ; 속성을 확인 하는 FileUpload 업로드할 파일을 포함 하는 컨트롤입니다. 경우는 HasFile 반환 true를 호출 합니다 SaveAs 메서드. 반환 하는 경우 false를 나타내는 사용자 컨트롤 파일 없습니다 메시지를 표시 합니다. 존재 하지 않는 파일을 저장 하려고 throw 파일이 있는지 확인 하는 오류 처리 코드를 제공 하지 않으면 경우는 HttpException 예외입니다.

에 대 한 호출에 대 한는 SaveAs 하려면 ASP.NET 애플리케이션 디렉터리에 대 한 쓰기 액세스에 있어야 서버. 두 가지 방법으로 애플리케이션 쓰기 액세스를 얻을 수 있습니다. 명시적으로 애플리케이션이 실행 되 고 있는, 업로드 된 파일을 저장할 디렉터리의 계정에 대 한 쓰기 액세스를 부여할 수 있습니다. 또는 ASP.NET 애플리케이션에 부여 되는 신뢰 수준을 늘릴 수 있습니다. 애플리케이션에 대 한 실행 디렉터리에 대 한 쓰기 액세스를 가져오려는 애플리케이션을 부여 해야 합니다는 AspNetHostingPermission 신뢰 수준이 설정 하는 개체는 AspNetHostingPermissionLevel.Medium 값입니다. 신뢰 수준을 증가 서버의 리소스에 대 한 애플리케이션의 액세스 합니다. 않음을 유의이 방법은 보안상 악의적인 사용자가 애플리케이션에 대 한 제어도 되므로이 더 높은 수준의 신뢰에서 실행할 수 있습니다. 애플리케이션 실행에 필요한 최소 권한을 가진 사용자의 컨텍스트에서 ASP.NET 애플리케이션을 실행 하는 것이 좋습니다. ASP.NET 애플리케이션의 보안에 대 한 자세한 내용은 참조 하세요. 웹 애플리케이션에 대 한 기본 보안 사례 하 고 ASP.NET 신뢰 수준과 정책 파일합니다.

적용 대상

추가 정보