Share via


FileUpload.SaveAs(String) Metodo

Definizione

Salva il contenuto di un file caricato in un percorso specificato sul server Web.

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

Parametri

filename
String

Stringa che specifica il percorso completo alla posizione del server in cui salvare il file caricato.

Eccezioni

filename non è un percorso completo.

Esempio

Nell'esempio seguente viene illustrato come creare un FileUpload controllo che esegue il controllo degli errori. Prima del salvataggio del file, viene chiamato il HasFile metodo per verificare che esista un file da caricare. Viene inoltre chiamato il File.Exists metodo per verificare se nel percorso esiste già un file con lo stesso nome. In caso affermativo, il nome del file da caricare è preceduto da un numero prima che venga chiamato il SaveAs metodo. Ciò impedisce la sovrascrittura del file esistente.

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

Commenti

Il SaveAs metodo salva il contenuto di un file caricato in un percorso specificato nel server Web.

Il FileUpload controllo non salva automaticamente un file nel server dopo che l'utente seleziona il file da caricare. È necessario fornire in modo esplicito un controllo o un meccanismo per consentire all'utente di inviare il file specificato. Ad esempio, è possibile specificare un pulsante che l'utente fa clic per caricare il file. Il codice scritto per salvare il file specificato deve chiamare il SaveAs metodo , che salva il contenuto di un file in un percorso specificato nel server. In genere, il SaveAs metodo viene chiamato in un metodo di gestione degli eventi per un evento che genera un postback al server. Ad esempio, se si specifica un pulsante per inviare un file, è possibile includere il codice per salvare il file nel server all'interno del metodo di gestione degli eventi per l'evento Click.

Quando si chiama il SaveAs metodo , è necessario specificare il percorso completo della directory nel server in cui salvare il file caricato. Se non si specifica in modo esplicito un percorso nel codice dell'applicazione, viene generata un'eccezione HttpException quando un utente tenta di caricare un file. Questo comportamento consente di proteggere i file nel server, senza consentire agli utenti di specificare un percorso in cui salvare i file caricati.

Prima di chiamare il SaveAs metodo, è necessario utilizzare la HasFile proprietà per verificare che il FileUpload controllo contenga un file da caricare. Se restituisce HasFiletrue, chiamare il SaveAs metodo . Se restituisce false, visualizzare un messaggio all'utente che indica che il controllo non contiene un file. Se non si specifica il codice di gestione degli errori per verificare che esista un file, un tentativo di salvare un file inesistente genera un'eccezione HttpException .

Per il funzionamento di una chiamata a SaveAs , l'applicazione ASP.NET deve avere accesso in scrittura alla directory nel server. Esistono due modi in cui l'applicazione può ottenere l'accesso in scrittura. È possibile concedere in modo esplicito l'accesso in scrittura all'account in cui è in esecuzione l'applicazione, nella directory in cui verranno salvati i file caricati. In alternativa, è possibile aumentare il livello di attendibilità concesso all'applicazione ASP.NET. Per ottenere l'accesso in scrittura alla directory in esecuzione per l'applicazione, all'applicazione deve essere concesso l'oggetto AspNetHostingPermission con il livello di attendibilità impostato sul AspNetHostingPermissionLevel.Medium valore . L'aumento del livello di attendibilità aumenta l'accesso dell'applicazione alle risorse nel server. Si noti che questo non è un approccio sicuro, perché un utente malintenzionato che ottiene il controllo dell'applicazione sarà anche in grado di eseguire con questo livello di attendibilità superiore. È consigliabile eseguire un'applicazione ASP.NET nel contesto di un utente che dispone dei privilegi minimi necessari per l'esecuzione dell'applicazione. Per altre informazioni sulla sicurezza nelle applicazioni ASP.NET, vedere Procedure di sicurezza di base per le applicazioni Web e ASP.NET livelli di attendibilità e file di criteri.

Si applica a

Vedi anche