FileUpload.SaveAs(String) Método

Definição

Guarda o conteúdo de um ficheiro carregado num caminho especificado no servidor Web.

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

Parâmetros

filename
String

Uma cadeia que especifica o caminho completo da localização do servidor onde se deve guardar o ficheiro carregado.

Exceções

filename não é um caminho completo.

Exemplos

O exemplo seguinte demonstra como criar um FileUpload controlo que realize verificação de erros. Antes de o ficheiro ser guardado, o HasFile método é chamado para verificar se existe um ficheiro a carregar. Além disso, o File.Exists método é chamado para verificar se um ficheiro com o mesmo nome já existe no caminho. Se o fizer, o nome do ficheiro a carregar é precedido por um número antes de o SaveAs método ser chamado. Isto impede que o ficheiro existente seja sobrescrito.

<%@ 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>

Observações

O SaveAs método guarda o conteúdo de um ficheiro carregado para um caminho especificado no servidor Web.

O FileUpload controlo não guarda automaticamente um ficheiro no servidor depois de o utilizador selecionar o ficheiro a carregar. Deve fornecer explicitamente um controlo ou mecanismo que permita ao utilizador submeter o ficheiro especificado. Por exemplo, pode fornecer um botão que o utilizador clica para carregar o ficheiro. O código que escreves para guardar o ficheiro especificado deve chamar o SaveAs método, que guarda o conteúdo de um ficheiro num caminho especificado no servidor. Normalmente, o SaveAs método é chamado num método de gestão de eventos para um evento que eleva uma publicação de volta ao servidor. Por exemplo, se fornecer um botão para submeter um ficheiro, o código para guardar o ficheiro no servidor pode então ser incluído dentro do método de gestão de eventos para o evento de clique.

Ao chamar o SaveAs método, deve especificar o caminho completo do diretório no servidor onde deve guardar o ficheiro carregado. Se não especificar explicitamente um caminho no código da sua aplicação, é lançada uma HttpException exceção quando um utilizador tenta carregar um ficheiro. Este comportamento ajuda a manter os ficheiros no servidor seguros, ao não permitir que os utilizadores especifiquem um caminho para guardar os ficheiros que carregam.

Antes de chamar o SaveAs método, deve usar a HasFile propriedade para verificar se o FileUpload controlo contém um ficheiro para carregar. Se o HasFile retorno true, chama o SaveAs método. Se devolver false, exibe uma mensagem ao utilizador indicando que o controlo não contém um ficheiro. Se não fornecer código de tratamento de erros para verificar a existência de um ficheiro, uma tentativa de guardar um ficheiro inexistente lança uma HttpException exceção.

Para que uma chamada ao SaveAs funcione, a aplicação ASP.NET deve ter acesso de escrita ao diretório no servidor. Existem duas formas de a aplicação obter acesso por escrita. Pode conceder explicitamente acesso por escrita à conta sob a qual a aplicação está a correr, no diretório onde os ficheiros carregados serão guardados. Em alternativa, pode aumentar o nível de confiança concedido à aplicação ASP.NET. Para obter acesso de escrita ao diretório em execução da aplicação, a aplicação deve receber o AspNetHostingPermission objeto com o nível de confiança definido para o AspNetHostingPermissionLevel.Medium valor. Aumentar o nível de confiança aumenta o acesso da aplicação aos recursos do servidor. Note que esta não é uma abordagem segura, porque um utilizador malicioso que tome controlo da sua aplicação também poderá correr sob este nível superior de confiança. É uma boa prática executar uma aplicação ASP.NET no contexto de um utilizador que tem os privilégios mínimos necessários para a aplicação funcionar. Para mais informações sobre segurança em aplicações ASP.NET, consulte Práticas Básicas de Segurança para Aplicações Web e ASP.NET Níveis de Confiança e Ficheiros de Políticas.

Aplica-se a

Ver também