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 при попытке пользователя отправить файл возникает исключение. Такое поведение помогает обеспечить безопасность файлов на сервере, не позволяя пользователям указывать путь, по которому будут сохраняться отправленные файлы.

Перед вызовом SaveAs метода следует использовать HasFile свойство, чтобы убедиться, что FileUpload элемент управления содержит файл для отправки. HasFile Если возвращается, вызовите SaveAs trueметод. Если он возвращается false, отобразите пользователю сообщение, указывающее, что элемент управления не содержит файл. Если код обработки ошибок не указан, чтобы убедиться, что файл существует, попытка сохранить несуществующий файл вызывает HttpException исключение.

Для вызова работы SaveAs приложение ASP.NET должно иметь доступ на запись к каталогу на сервере. Приложение может получить доступ на запись двумя способами. Вы можете явно предоставить доступ на запись к учетной записи, в которой выполняется приложение, в каталоге, в котором будут сохранены отправленные файлы. Кроме того, можно повысить уровень доверия, предоставленный приложению ASP.NET. Чтобы получить доступ на запись в исполняемый каталог для приложения, приложению необходимо предоставить AspNetHostingPermission объект с уровнем доверия, установленным для AspNetHostingPermissionLevel.Medium значения. Повышение уровня доверия повышает доступ приложения к ресурсам на сервере. Обратите внимание, что это не безопасный подход, так как злоумышленник, который получает контроль над приложением, также сможет работать под этим более высоким уровнем доверия. Рекомендуется запускать приложение ASP.NET в контексте пользователя с минимальными привилегиями, необходимыми для запуска приложения. Дополнительные сведения о безопасности в приложениях ASP.NET см. в разделе "Основные методы безопасности для веб-приложений" и ASP.NET уровнях доверия и файлах политик.

Применяется к

См. также раздел