Freigeben über


FileUpload.SaveAs(String) Methode

Definition

Speichert den Inhalt einer hochgeladenen Datei in einem angegebenen Pfad auf dem Webserver.

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

Parameter

filename
String

Eine Zeichenfolge, die den vollständigen Pfad des Speicherorts des Servers angibt, auf dem die hochgeladene Datei gespeichert werden soll.

Ausnahmen

filename ist kein vollständiger Pfad.

Beispiele

Im folgenden Beispiel wird veranschaulicht, wie Sie ein FileUpload Steuerelement erstellen, das eine Fehlerüberprüfung durchführt. Bevor die Datei gespeichert wird, wird die HasFile Methode aufgerufen, um zu überprüfen, ob eine hochzuladende Datei vorhanden ist. Darüber hinaus wird die File.Exists Methode aufgerufen, um zu überprüfen, ob eine Datei mit demselben Namen bereits im Pfad vorhanden ist. Wenn dies der Fall ist, wird dem Namen der hochzuladenden Datei eine Zahl vorangestellt, bevor die SaveAs Methode aufgerufen wird. Dadurch wird verhindert, dass die vorhandene Datei überschrieben wird.

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

Hinweise

Die SaveAs Methode speichert den Inhalt einer hochgeladenen Datei in einem angegebenen Pfad auf dem Webserver.

Das FileUpload Steuerelement speichert eine Datei nicht automatisch auf dem Server, nachdem der Benutzer die hochzuladende Datei ausgewählt hat. Sie müssen explizit ein Steuerelement oder einen Mechanismus bereitstellen, damit der Benutzer die angegebene Datei übermitteln kann. Sie können beispielsweise eine Schaltfläche angeben, auf die der Benutzer klickt, um die Datei hochzuladen. Der Code, den Sie zum Speichern der angegebenen Datei schreiben, sollte die SaveAs Methode aufrufen, mit der der Inhalt einer Datei in einem angegebenen Pfad auf dem Server gespeichert wird. In der Regel wird die SaveAs Methode in einer Ereignisbehandlungsmethode für ein Ereignis aufgerufen, das einen Beitrag zurück auf den Server auslöst. Wenn Sie beispielsweise eine Schaltfläche zum Übermitteln einer Datei bereitstellen, könnte der Code zum Speichern der Datei auf dem Server in die Ereignisbehandlungsmethode für das Click-Ereignis eingeschlossen werden.

Wenn Sie die SaveAs Methode aufrufen, müssen Sie den vollständigen Pfad des Verzeichnisses auf dem Server angeben, in dem die hochgeladene Datei gespeichert werden soll. Wenn Sie keinen Pfad im Anwendungscode explizit angeben, wird eine HttpException Ausnahme ausgelöst, wenn ein Benutzer versucht, eine Datei hochzuladen. Dieses Verhalten trägt dazu bei, die Dateien auf dem Server sicher zu halten, indem Benutzer keinen Pfad angeben können, in dem die hochgeladenen Dateien gespeichert werden sollen.

Bevor Sie die SaveAs Methode aufrufen, sollten Sie die HasFile Eigenschaft verwenden, um zu überprüfen, ob das FileUpload Steuerelement eine Datei zum Hochladen enthält. Wenn die HasFile Rückgabe trueerfolgt, rufen Sie die SaveAs Methode auf. Wenn sie zurückgegeben wird false, wird dem Benutzer eine Meldung angezeigt, die angibt, dass das Steuerelement keine Datei enthält. Wenn Sie keinen Fehlerbehandlungscode bereitstellen, um zu überprüfen, ob eine Datei vorhanden ist, löst ein Versuch, eine nicht vorhandene Datei zu speichern, eine HttpException Ausnahme aus.

Damit ein Aufruf an die SaveAs Arbeit ausgeführt wird, muss die ASP.NET Anwendung Schreibzugriff auf das Verzeichnis auf dem Server haben. Es gibt zwei Möglichkeiten, wie die Anwendung Schreibzugriff erhalten kann. Sie können explizit Schreibzugriff auf das Konto gewähren, unter dem die Anwendung ausgeführt wird, in dem Verzeichnis, in dem die hochgeladenen Dateien gespeichert werden. Alternativ können Sie die Vertrauensstufe erhöhen, die der ASP.NET Anwendung gewährt wird. Um Schreibzugriff auf das ausführungsverzeichnis für die Anwendung zu erhalten, muss der Anwendung das AspNetHostingPermission Objekt gewährt werden, wobei die Vertrauensstufe auf den AspNetHostingPermissionLevel.Medium Wert festgelegt ist. Das Erhöhen der Vertrauensstufe erhöht den Zugriff der Anwendung auf Ressourcen auf dem Server. Beachten Sie, dass dies kein sicherer Ansatz ist, da ein böswilliger Benutzer, der die Kontrolle über Ihre Anwendung erhält, auch unter dieser höheren Vertrauensebene ausgeführt werden kann. Es empfiehlt sich, eine ASP.NET Anwendung im Kontext eines Benutzers auszuführen, der über die mindestberechtigungen verfügt, die für die Ausführung der Anwendung erforderlich sind. Weitere Informationen zur Sicherheit in ASP.NET Anwendungen finden Sie unter Grundlegende Sicherheitspraktiken für Webanwendungen und ASP.NET Vertrauensstufen und Richtliniendateien.

Gilt für:

Weitere Informationen