Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
In diesem Artikel wird beschrieben, wie Sie eine Datei mithilfe von Microsoft Visual C# hochladen.
Ursprüngliche Produktversion: Visual C#, ASP.NET, Internetinformationsdienste
Ursprüngliche KB-Nummer: 816150
Einführung
In diesem Schritt-für-Schritt-Artikel wird erläutert, wie Sie eine vorhandene Bilddatei von Ihrer lokalen Festplatte auf eine Website hochladen. Ein Eingabesteuerelement wird verwendet, um ein Bild von Ihrem lokalen Computer hochzuladen. Diese datei, die hochgeladen wird, wird auf dem Server überprüft, um sicherzustellen, dass Sie keine vorhandene Datei überschreiben, die bereits hochgeladen wurde. Die hochgeladene Datei wird überprüft, wenn sie auf dem Server vorhanden ist. In diesem Artikel wird das EncType
Attribut des Formulars verwendet, um die Funktionalität zu erreichen.
Anforderungen
In diesem Artikel wird davon ausgegangen, dass Sie mit den folgenden Themen vertraut sind:
- Webanwendungen
- ASP.NET
In der folgenden Liste sind die empfohlenen Software- und Netzwerkinfrastrukturen aufgeführt, die Sie benötigen:
- Visual C# .NET oder Visual C#
- Internetinformationsdienste (IIS)
Erstellen eines ASP.NET Webformulars
Starten Sie Visual Studio .NET oder Visual Studio.
Zeigen Sie im Menü Datei auf Neu, und klicken Sie dann auf Projekt.
Notiz
Zeigen Sie in Visual Studio im Menü "Datei" auf "Neu", und klicken Sie dann auf "Website".
Klicken Sie unter Projekttypen auf Visual C#-Projekte. Klicken Sie unter "Vorlagen" auf ASP.NET Webanwendung.
Notiz
Wählen Sie in Visual Studio rechts neben "Sprache" Visual C# aus. Klicken Sie unter "Vorlagen" auf ASP.NET Website.
Geben Sie im Feld "Speicherort " den folgenden Speicherort ein, und klicken Sie dann auf "OK":
http://WebServerName/ApplicationName
Notiz
WebServerName ist ein Platzhalter für den Namen Ihres Webservers. ApplicationName ist ein Platzhalter für den Namen Ihrer Anwendung.
Standardmäßig wird WebForm1.aspx erstellt.
Notiz
Wählen Sie in Visual Studio rechts neben dem Speicherort HTTP aus, und geben Sie
<http://WebServerName>
dann ein.Klicken Sie im Menü "Ansicht" auf "HTML-Quelle".
Notiz
Klicken Sie in Visual Studio im Menü "Ansicht" auf "Code".
Ändern der Formularattribute
Ersetzen Sie im HTML-Fenster von WebForm1 das Formulartag durch Folgendes:
<form id="Form1" method="post" runat="server" EncType="multipart/form-data" action="WebForm1.aspx">
Das EncType
Attribut gibt das Format der geposteten Daten an. Der Browser verwendet dieses Attribut, um die Informationen zu codieren, die auf dem Server bereitgestellt werden. Das Aktionsattribute in diesem Code gibt an, dass die Seite die Anforderung verarbeitet. Standardmäßig ist das Methodenattribute des Formulars auf "Posten" festgelegt, sodass Sie große Datenmengen in der Transaktion senden können.
Fügen Sie das Eingabesteuerelement hinzu, um die Datei anzugeben, die Sie auf den Server hochladen möchten.
Fügen Sie im HTML-Fenster von WebForm1 den folgenden Code zwischen dem Öffnen und den schließenden
<form>
Tags hinzu:<INPUT id="oFile" type="file" runat="server" NAME="oFile">
Dieses Eingabesteuerelement gibt die Datei an, die Sie auf den Server hochladen möchten.
Sie können vor dem Steuerelement eine Textzeichenfolge hinzufügen, um den Benutzer aufzufordern. Geben Sie den folgenden Text vor dem Eingabesteuerelement im HTML-Fenster von WebForm1 ein:
Wählen Sie die Bilddatei aus, die auf den Server hochgeladen werden soll:
Hinzufügen eines Schaltflächensteuerelements
Fügen Sie im HTML-Fenster von WebForm1 den folgenden Code zwischen den öffnenden und schließenden
<form>
Tags nach dem Eingabesteuerelementcode hinzu:<asp:button id="btnUpload" type="submit" text="Upload" runat="server"></asp:button>
Dieses Schaltflächensteuerelement wird verwendet, um die Datei hochzuladen, die Sie im Eingabesteuerelement angegeben haben.
Erstellen eines Panel-Steuerelements, das eine einzelne Beschriftung enthält, um die Ausgabe anzuzeigen
Fügen Sie im HTML-Fenster von WebForm1 den folgenden Code zwischen den öffnenden und schließenden <form>
Tags nach dem Schaltflächen-Steuerelementcode hinzu:
<asp:Panel ID="frmConfirmation" Visible="False" Runat="server">
<asp:Label id="lblUploadResult" Runat="server"></asp:Label>
</asp:Panel>
Dieser Code wird verwendet, um die Meldung anzuzeigen, um anzugeben, ob der Dateiupload erfolgreich ist. Um diese Ausgabe anzuzeigen, wird ein Panel-Steuerelement erstellt, das eine einzelne Bezeichnung enthält.
Hochladen der Datei auf das Button Click-Ereignis
Der Code in diesem Abschnitt ruft die Datei aus dem lokalen Dateisystem ab, überprüft, ob die Datei bereits auf dem Server vorhanden ist, und lädt die Datei dann auf die Website hoch. Führen Sie die folgenden Schritte aus, um diesen Code hinzuzufügen:
Doppelklicken Sie auf die Schaltfläche "Hochladen ", die im Abschnitt "Schaltflächensteuerelement hinzufügen" dieses Artikels erstellt wurde, um einen Ereignishandler für das
Click
Ereignis des Schaltflächensteuerelements zu erstellen.Fügen Sie oben im Codefenster den folgenden Code hinzu:
using System.IO;
Fügen Sie dem Ereignishandler für die Schaltfläche "Hochladen" den
Click
folgenden Code hinzu:string strFileName; string strFilePath; string strFolder; strFolder = Server.MapPath("./"); // Retrieve the name of the file that is posted. strFileName = oFile.PostedFile.FileName; strFileName = Path.GetFileName(strFileName); if(oFile.Value != "") { // Create the folder if it does not exist. if(!Directory.Exists(strFolder)) { Directory.CreateDirectory(strFolder); } // Save the uploaded file to the server. strFilePath = strFolder + strFileName; if(File.Exists(strFilePath)) { lblUploadResult.Text = strFileName + " already exists on the server!"; } else { oFile.PostedFile.SaveAs(strFilePath); lblUploadResult.Text = strFileName + " has been successfully uploaded."; } } else { lblUploadResult.Text = "Click 'Browse' to select the file to upload."; } // Display the result of the upload. frmConfirmation.Visible = true;
Klicken Sie im Menü Datei auf Alle speichern.
Überprüfen, ob die Uploadaktion funktioniert
Klicken Sie im Menü "Debuggen " auf "Start ", um die Anwendung zu erstellen und auszuführen. Ein Textfeld und eine Befehlsschaltfläche werden angezeigt.
Geben Sie den Pfad der Bilddatei in das Textfeld ein, oder klicken Sie auf ' Durchsuchen ', um die Bilddatei auf Ihrem lokalen Computer zu suchen.
Klicken Sie auf "Hochladen ", um die Datei an den Server zu senden. Wenn die Datei eindeutig ist, erhalten Sie eine Meldung, dass der Upload erfolgreich war. Wenn die Datei bereits auf dem Server vorhanden ist, erhalten Sie eine entsprechende Nachricht. Die Dateien, die Sie von dieser Anwendung hochladen, werden am Speicherort gespeichert:
C:\inetpub\wwwroot\ApplicationName
auf der lokalen Festplatte.Damit diese Anwendung in .NET Framework funktioniert, ermöglichen Sie den Vollzugriff auf den ASPNET-Benutzer . Gehen Sie dazu wie folgt vor:
Suchen Sie den Anwendungsordner im Windows-Explorer. Der Pfad lautet
C:\inetpub\wwwroot\ApplicationName
.Klicken Sie mit der rechten Maustaste auf den Ordner "ApplicationName ", und klicken Sie dann auf "Eigenschaften". Das Dialogfeld "ApplicationName-Eigenschaften " wird angezeigt.
Klicken Sie auf die Registerkarte Sicherheit .
Klicken Sie auf Hinzufügen. Das Dialogfeld Benutzer oder Gruppen auswählen wird angezeigt.
Notiz
In Visual Studio wird das Dialogfeld "Benutzer, Computer oder Gruppen auswählen" angezeigt.
Geben Sie ASPNET in das Zu markierende Feld ein, geben Sie die Objektnamen ein, und klicken Sie dann auf "OK".
Klicken Sie im Dialogfeld "ApplicationName-Eigenschaften" in der Liste "Gruppen- oder Benutzernamen" auf den ASPNET-Benutzer.
Klicken Sie unter "Zulassen", um das Kontrollkästchen "Vollzugriff " zu aktivieren, und klicken Sie dann auf "OK".
Vollständige Codeliste
WebForm1.aspx
<%@ Page language="c#" Codebehind="WebForm1.aspx.cs" AutoEventWireup="false" Inherits="Howto.WebForm1" %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" > <HTML> <HEAD> <title>WebForm1</title> <meta name="GENERATOR" Content="Microsoft Visual Studio .NET 7.1"> <meta name="CODE_LANGUAGE" Content="C#"> <meta name="vs_defaultClientScript" content="JavaScript"> <meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5"> </HEAD> <body MS_POSITIONING="GridLayout"> <form id="Form1" method="post" runat="server" EncType="multipart/form-data" action="WebForm1.aspx"> Image file to upload to the server: <INPUT id="oFile" type="file" runat="server" NAME="oFile"> <asp:button id="btnUpload" type="submit" text="Upload" runat="server"></asp:button> <asp:Panel ID="frmConfirmation" Visible="False" Runat="server"> <asp:Label id="lblUploadResult" Runat="server"></asp:Label> </asp:Panel> </form> </body> </HTML>
WebForm1.aspx.cs
using System; using System.Collections; using System.ComponentModel; using System.Data; using System.Drawing; using System.Web; using System.Web.SessionState; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.HtmlControls; using System.IO; namespace **ApplicationName** { /// <summary> /// Summary description for WebForm1. /// </summary> public class WebForm1 : System.Web.UI.Page { protected System.Web.UI.WebControls.Button btnUpload; protected System.Web.UI.WebControls.Label lblUploadResult; protected System.Web.UI.WebControls.Panel frmConfirmation; protected System.Web.UI.HtmlControls.HtmlInputFile oFile; private void Page_Load(object sender, System.EventArgs e) { // Put user code to initialize the page here } #region Web Form Designer generated code override protected void OnInit(EventArgs e) { // CODEGEN: This call is required by the ASP.NET Web Form Designer. InitializeComponent(); base.OnInit(e); } /// <summary> /// Required method for Designer support - do not modify /// the contents of this method with the code editor. /// </summary> private void InitializeComponent() { this.btnUpload.Click += new System.EventHandler(this.btnUpload_Click); this.Load += new System.EventHandler(this.Page_Load); } #endregion private void btnUpload_Click(object sender, System.EventArgs e) { string strFileName; string strFilePath; string strFolder; strFolder = Server.MapPath("./"); // Get the name of the file that is posted. strFileName = oFile.PostedFile.FileName; strFileName = Path.GetFileName(strFileName); if(oFile.Value != "") { // Create the directory if it does not exist. if(!Directory.Exists(strFolder)) { Directory.CreateDirectory(strFolder); } // Save the uploaded file to the server. strFilePath = strFolder + strFileName; if(File.Exists(strFilePath)) { lblUploadResult.Text = strFileName + " already exists on the server!"; } else { oFile.PostedFile.SaveAs(strFilePath); lblUploadResult.Text = strFileName + " has been successfully uploaded."; } } else { lblUploadResult.Text = "Click 'Browse' to select the file to upload."; } // Display the result of the upload. frmConfirmation.Visible = true; } }
Notiz
Der in Visual Studio generierte Code unterscheidet sich vom in Visual Studio .NET generierten Code.
Problembehandlung
- Öffnen Sie die Datei Machine.config , die sich auf Ihrem Computer befindet, im Ordner CONFIG unter dem Pfad, unter dem Sie die Laufzeit installiert haben.
- Suchen Sie den
<processModel>
Abschnitt in der Datei "Machine.config ", ändern Sie dieuser
Attribute und diepassword
Attribute in den Namen und das Kennwort des Benutzers, der W3wp.exe oder Aspnet_wp.exe ausführen soll, und speichern Sie dann die Datei "Machine.config ". - Suchen Sie den Ordner "Temporary ASP.NET Files", der sich im Ordner CONFIG befindet. Klicken Sie mit der rechten Maustaste auf den Ordner "Temporäre ASP.NET Dateien ", und klicken Sie dann auf "Eigenschaften".
- Klicken Sie im Dialogfeld Temporary ASP.NET Files Properties (Eigenschaften temporärer ASP.NET-Dateien) auf die Registerkarte Sicherheit.
- Klicken Sie auf Erweitert.
- Klicken Sie im Dialogfeld "Zugriffssteuerungseinstellungen für temporäre ASP.NET Dateien " auf "Hinzufügen".
- Geben Sie im Dialogfeld den Benutzernamen in das Feld "Name " ein, und klicken Sie dann auf "OK".
- Erteilen Sie dem Benutzer im Dialogfeld "Berechtigungseintrag für temporäre ASP.NET Dateien " vollständige Berechtigungen, und klicken Sie dann auf " OK ", um das Dialogfeld "Temporäre ASP.NET Dateieigenschaften " zu schließen.