Freigeben über


Gewusst wie: Uploaden von Dateien mit dem FileUpload-Webserversteuerelement

Aktualisiert: November 2007

Mit dem FileUpload-Webserversteuerelement können Benutzer eine Datei von ihrem Computer auf den Server laden. Die zu uploadende Datei wird beim Postback als Teil der Browseranforderung an den Server übermittelt. Nach Beendigung des Uploads können Sie die Datei in Ihrem Code verwalten.

Hinweis:

Die maximale Größe einer uploadbaren Datei richtet sich nach dem Wert der MaxRequestLength-Konfigurationseinstellung. Bei Überschreiten der maximalen Dateigröße wird der Upload nicht ausgeführt.

So uploaden Sie eine Datei mit dem FileUpload-Webserversteuerelement

  1. Fügen Sie der Seite ein FileUpload-Steuerelement hinzu.

    Hinweis:

    Aus Sicherheitsgründen können Sie den Namen einer Datei nicht schon vorher in das FileUpload-Steuerelement laden.

  2. Führen Sie im Handler für ein Ereignis (z. B. das Load-Ereignis der Seite) folgende Schritte aus:

    1. Überprüfen Sie, ob das FileUpload-Steuerelement über eine zu uploadende Datei verfügt, indem Sie die HasFile-Eigenschaft überprüfen.

    2. Überprüfen Sie den Dateinamen oder den MIME-Typ der Datei, um sicherzustellen, dass die Benutzer nur zulässige Dateien uploaden. Rufen Sie zur Überprüfung des MIME-Typs das HttpPostedFile-Objekt ab, das als die PostedFile-Eigenschaft des FileUpload-Steuerelements verfügbar gemacht wird. Rufen Sie dann den MIME-Typ ab, indem Sie die ContentType-Eigenschaft der gesendeten Datei überprüfen.

      Sicherheitshinweis:

      Die MIME-Typen von zu uploadenden Dateien können unter Umständen vorgetäuscht sein (Spoofing). Die Überprüfung des MIME-Typs allein ist keine zuverlässige Sicherheitsüberprüfung.

    3. Speichern Sie die Datei am gewünschten Speicherort ab. Sie können die SaveAs-Methode des HttpPostedFile-Objekts aufrufen. Wahlweise können Sie die geuploadete Datei als Bytearray oder Stream verwalten, indem Sie die InputStream-Eigenschaft des HttpPostedFile-Objekts verwenden.

    Im folgenden Beispiel wird veranschaulicht, wie Sie mit einer geuploadeten Datei umgehen. Der Code überprüft die geuploadete Datei anhand einer hartcodierten Liste von zulässigen Dateinamenerweiterungen und weist alle dort nicht enthaltenen Dateitypen zurück. Die Datei wird dann in den Ordner UploadedImages der aktuellen Website geschrieben. Die geuploadete Datei wird unter dem Namen gespeichert, den sie auch auf dem Clientcomputer hatte. Die FileName-Eigenschaft des FileUpload-Steuerelements wird verwendet, weil die FileName-Eigenschaft des HttpPostedFile-Objekts den vollständigen Pfad der Datei auf dem Clientcomputer zurückgibt.

    Sicherheitshinweis:

    Zeigen Sie Pfad und Namen der gespeicherten Datei nicht den Benutzern an, um einen Missbrauch zu vermeiden.

    Protected Sub Page_Load(ByVal sender As Object, 
            ByVal e As System.EventArgs) Handles Me.Load
        If IsPostBack Then
            Dim path As String = Server.MapPath("~/UploadedImages/")
            Dim fileOK As Boolean = False
            If FileUpload1.HasFile Then
                Dim fileExtension As String
                fileExtension = System.IO.Path. _
                    GetExtension(FileUpload1.FileName).ToLower()
                Dim allowedExtensions As String() = _
                    {".jpg", ".jpeg", ".png", ".gif"}
                For i As Integer = 0 To allowedExtensions.Length - 1
                    If fileExtension = allowedExtensions(i) Then
                       fileOK = True
                    End If
                Next
                If fileOK Then
                    Try
                        FileUpload1.PostedFile.SaveAs(path & _
                             FileUpload1.FileName)
                        Label1.Text = "File uploaded!"
                    Catch ex As Exception
                        Label1.Text = "File could not be uploaded."
                    End Try
                Else
                    Label1.Text = "Cannot accept files of this type."
                End If
            End If
        End If
    End Sub
    
    protected void Page_Load(object sender, EventArgs e)
    {
        if(IsPostBack)
        {
            Boolean fileOK = false;
            String path = Server.MapPath("~/UploadedImages/");
            if (FileUpload1.HasFile) 
            {
                String fileExtension = 
                    System.IO.Path.GetExtension(FileUpload1.FileName).ToLower();
                String[] allowedExtensions = 
                    {".gif", ".png", ".jpeg", ".jpg"};
              for (int i = 0; i < allowedExtensions.Length; i++)
              {
                   if (fileExtension == allowedExtensions[i])
                   {
                        fileOK = true;
                   }
              }
            }
    
            if (fileOK)
            {
                try
                {
                    FileUpload1.PostedFile.SaveAs(path 
                        + FileUpload1.FileName);
                    Label1.Text = "File uploaded!";
                }
                catch (Exception ex)
                {
                    Label1.Text = "File could not be uploaded.";
                }
            }
            else
            {
                Label1.Text = "Cannot accept files of this type.";
            }
        }
    }
    

Siehe auch

Konzepte

Übersicht über das FileUpload-Webserversteuerelement