In diesem Abschnitt werden die beiden Methoden beschrieben, die in ASP.NET zum Hochladen von Dateien auf Webseiten verwendet werden.
ASP.NET enthält zwei Steuerelemente, die es Benutzern ermöglichen, Dateien auf den Webserver hochzuladen. Sobald der Server die hochgeladenen Dateidaten akzeptiert, kann die Anwendung sie speichern, prüfen oder ignorieren. Das nächste Steuerelement ermöglicht das Hochladen von Dateien:
HtmlInputFile – HTML-Serversteuerung
FileUpload – ASP.NET-Websteuerung
Beide Steuerelemente ermöglichen das Hochladen von Dateien, aber das FileUpload-Steuerelement legt das Codierungsformat automatisch fest, während dies beim HtmlInputFile-Steuerelement nicht der Fall ist.
In diesem Tutorial verwenden wir das FileUpload-Steuerelement. Mit diesem Steuerelement kann der Benutzer eine Vorschau der ausgewählten hochzuladenden Datei anzeigen. Es bietet eine Vorschauschaltfläche und ein Textfeld, in das der Dateiname eingegeben werden kann.
Sobald der Benutzer einen Dateinamen in das Textfeld eingibt oder eine Vorschau der Datei anzeigt, speichert die SaveAs-Methode des FileUpload-Steuerelements die Datei auf der Festplatte.
Die grundlegende Syntax von FileUpload lautet wie folgt:
<asp:FileUpload ID= "Uploader" runat = "server" />
Die FileUpload-Klasse ist von der WebControl-Klasse abgeleitet und erbt alle ihre Elemente. Die FileUpload-Klasse verfügt über die folgenden schreibgeschützten Eigenschaften:
Eigentum | beschreiben |
---|---|
FileBytes | Gibt einen Satz Bytecodes für die hochzuladende Datei zurück |
Dateiinhalt | Gibt das Stream-Objekt der hochzuladenden Datei zurück |
Dateiname | Gibt den Namen der Datei zurück, die hochgeladen wird |
HasFile | Stellen Sie fest, ob das Steuerelement über Dateien zum Hochladen verfügt |
GeposteteDatei | Gibt einen Verweis auf die hochgeladene Datei zurück |
Die veröffentlichte Datei ist in einem Objekt in Form von HttpPostedFile gekapselt, auf das über die PostedFile-Eigenschaft der FileUpload-Klasse zugegriffen werden kann.
Die HttpPostedFile-Klasse verfügt über die folgenden häufig verwendeten Eigenschaften:
Eigentum | beschreiben |
---|---|
ContentLength | Gibt die Bytegröße der hochgeladenen Datei zurück |
Inhaltstyp | Gibt den MIME-Typ der hochgeladenen Datei zurück |
Dateiname | Gibt den vollständigen Namen der Datei zurück |
InputStream | Gibt das Stream-Objekt der hochzuladenden Datei zurück |
Das folgende Beispiel veranschaulicht das FileUpload-Steuerelement und seine Eigenschaften. Dieses Formular verfügt über ein FileUpload-Steuerelement sowie eine Schaltfläche zum Speichern und ein Beschriftungssteuerelement mit dem tatsächlichen Dateinamen, -typ und -länge.
Im Designmodus sieht die Tabelle so aus:
Die relevanten Dateicodes sind unten aufgeführt:
<body> <form id="form1" runat="server"> <div> <h3> File Upload:</h3> <br /> <asp:FileUpload ID="FileUpload1" runat="server" /> <br /><br /> <asp:Button ID="btnsave" runat="server" onclick="btnsave_Click" Text="Save" /> <br /><br /> <asp:Label ID="lblmessage" runat="server" /> </div> </form></body>
Der Code für die Schaltfläche „Speichern“ ist unten aufgeführt:
protected void btnsave_Click(object sender, EventArgs e){ StringBuilder sb = new StringBuilder(); if (FileUpload1.HasFile) { try { sb.AppendFormat(" Uploading file: {0}", FileUpload1.FileName); //saving the file FileUpload1.SaveAs("<c:\SaveDirectory>" + FileUpload1.FileName); //Showing the file information sb.AppendFormat("<br/> Save As: {0}", FileUpload1.PostedFile.FileName); sb.AppendFormat("<br/> File type: {0}", FileUpload1.PostedFile.ContentType); sb.AppendFormat("<br/> File length: {0}", FileUpload1.PostedFile.ContentLength); sb.AppendFormat("<br/> File name: {0}", FileUpload1.PostedFile.FileName); }catch (Exception ex) { sb.Append("<br/> Error <br/>"); sb.AppendFormat("Unable to save file <br/> {0}", ex.Message); } } else { lblmessage.Text = sb.ToString(); }}
Achten Sie auf folgende Punkte:
Die StringBuilder-Klasse wird aus dem System.IO-Namespace generiert und sollte daher enthalten sein.
Die Try- und Catch-Bereiche werden zum Abfangen von Fehlern und zum Anzeigen von Fehlermeldungen verwendet.