Dela via


Använda Visual C# för att ladda upp en fil till en webbplats

Den här artikeln beskriver hur du laddar upp en fil med hjälp av Microsoft Visual C#.

Ursprunglig produktversion: Visual C#, ASP.NET, Internet Information Services
Ursprungligt KB-nummer: 816150

Inledning

Den här stegvisa artikeln beskriver hur du laddar upp en befintlig avbildningsfil från din lokala hårddisk till en webbplats. En indatakontroll används för att ladda upp en bild från din lokala dator. Den här filen som laddas upp verifieras mot servern för att se till att du inte skriver över en befintlig fil som redan har laddats upp. Den uppladdade filen verifieras om den finns på servern. Den här artikeln använder EncType formulärets attribut för att uppnå funktionen.

Krav

Den här artikeln förutsätter att du är bekant med följande ämnen:

  • Webbprogram
  • ASP.NET

I följande lista beskrivs den rekommenderade programvaru- och nätverksinfrastrukturen som du behöver:

  • Visual C# .NET eller Visual C#
  • Internet Information Services (IIS)

Skapa ett ASP.NET webbformulär

  1. Starta Visual Studio .NET eller Visual Studio.

  2. Peka på NyttRedigera-menyn, och klicka sedan på Projekt.

    Obs!

    I Visual Studio pekar du på NyArkiv-menyn och klickar sedan på Webbplats.

  3. Under Projekttyper klickar du på Visual C#-projekt. Under Mallar klickar du på ASP.NET webbprogram.

    Obs!

    I Visual Studio väljer du Visual C# till höger om Språk. Under Mallar klickar du på ASP.NET webbplats.

  4. I rutan Plats skriver du följande plats och klickar sedan på OK:
    http://WebServerName/ApplicationName

    Obs!

    WebServerName är en platshållare för namnet på webbservern. ApplicationName är en platshållare för namnet på ditt program.

    Som standard skapas WebForm1.aspx .

    Obs!

    I Visual Studio väljer du HTTP till höger om Plats och skriver <http://WebServerName>sedan .

  5. På menyn Visa klickar du på HTML-källa.

    Obs!

    I Visual Studio klickar du på Kod visa-menyn.

Ändra formulärattributen

I HTML-fönstret i WebForm1 ersätter du formulärtaggen med följande:

<form id="Form1" method="post" runat="server" EncType="multipart/form-data" action="WebForm1.aspx">

Attributet EncType anger formatet på de data som publiceras. Webbläsaren använder det här attributet för att koda den information som publiceras på servern. Åtgärdsattributet i den här koden anger att sidan bearbetar begäran. Som standard är formulärets metodattribut inställt på post så att du kan skicka stora mängder data i transaktionen.

Lägg till indatakontrollen för att ange den fil som du vill ladda upp till servern

  1. I HTML-fönstret i WebForm1 lägger du till följande kod mellan inledande och avslutande <form> taggar:

    <INPUT id="oFile" type="file" runat="server" NAME="oFile">
    

    Den här indatakontrollen anger den fil som du vill ladda upp till servern.

  2. Du kan lägga till en textsträng framför kontrollen för att fråga användaren. Skriv följande text framför inmatningskontrollen i HTML-fönstreti WebForm1:

    Välj avbildningsfilen som ska laddas upp till servern:

Lägg till en knappkontroll

  1. I HTML-fönstret i WebForm1 lägger du till följande kod mellan inledande och avslutande <form> taggar efter indatakontrollkoden:

    <asp:button id="btnUpload" type="submit" text="Upload" runat="server"></asp:button>
    
  2. Den här knappkontrollen används för att ladda upp filen som du angav i inmatningskontrollen.

Skapa en panelkontroll som innehåller en enda etikett för att visa utdata

I HTML-fönstret i WebForm1 lägger du till följande kod mellan inledande och avslutande <form> taggar efter knappkontrollkoden:

<asp:Panel ID="frmConfirmation" Visible="False" Runat="server">
    <asp:Label id="lblUploadResult" Runat="server"></asp:Label>
</asp:Panel>

Den här koden används för att visa meddelandet för att ange om filuppladdningen lyckas. Om du vill visa dessa utdata skapas en panelkontroll som innehåller en enda etikett.

Ladda upp filen på händelsen Knappklick

Koden i det här avsnittet hämtar filen från det lokala filsystemet, kontrollerar om filen redan finns på servern och laddar sedan upp filen till webbplatsen. Följ dessa steg för att lägga till den här koden:

  1. Dubbelklicka på knappen Ladda upp som skapades i avsnittet Lägg till en knappkontroll i den här artikeln för att skapa en händelsehanterare för händelsen för Click knappkontrollen.

  2. Lägg till följande kod överst i kodfönstret:

    using System.IO;
    
  3. Lägg till följande kod i Click händelsehanteraren för knappen Ladda upp :

    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;
    
  4. Klicka på Spara allaArkiv-menyn.

Kontrollera att uppladdningsåtgärden fungerar

  1. felsökningsmenyn klickar du på Start för att skapa och för att köra programmet. En textruta och en kommandoknapp visas.

  2. Skriv sökvägen till bildfilen i textrutan eller klicka på Bläddra för att hitta bildfilen på den lokala datorn.

  3. Klicka på Ladda upp för att skicka filen till servern. Om filen är unik får du ett meddelande om att uppladdningen lyckades. Om filen redan finns på servern får du ett lämpligt meddelande. Filerna som du laddar upp från det här programmet sparas på platsen: C:\inetpub\wwwroot\ApplicationName på den lokala hårddisken.

  4. Om du vill att det här programmet ska fungera i .NET Framework tillåter du fullständig åtkomst till ASPNET-användaren. Gör så här:

    1. Leta upp programmappen i Utforskaren. Sökvägen är C:\inetpub\wwwroot\ApplicationName.

    2. Högerklicka på mappen ApplicationName och klicka sedan på Egenskaper. Dialogrutan ApplicationName-egenskaper visas.

    3. Klicka på fliken Säkerhet.

    4. Klicka på Lägg till. Dialogrutan Välj användare eller grupper visas.

      Obs!

      Dialogrutan Välj användare, datorer eller grupper visas i Visual Studio.

    5. Skriv ASPNET i rutan Ange de objektnamn som ska väljas och klicka sedan på OK.

    6. I dialogrutan ApplicationName-egenskaper klickar du på ASPNET-användaren i listan Grupp eller användarnamn .

    7. Under Tillåt klickar du för att markera kryssrutan Fullständig kontroll och klickar sedan på OK.

Fullständig kodlista

  • 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;
        }
    }
    

Obs!

Koden som genereras i Visual Studio skiljer sig från koden som genereras i Visual Studio .NET.

Felsökning

  1. Öppna denMachine.config fil som finns på datorn i mappen CONFIG under sökvägen där du installerade körningen.
  2. Leta upp <processModel> avsnittet i Machine.config-filen , ändra attributen userpassword och till namnet och lösenordet för den användare som du vill att W3wp.exe eller Aspnet_wp.exe ska köras under och spara sedan filenMachine.config .
  3. Leta upp mappen Temporary ASP.NET Files som finns i mappen CONFIG . Högerklicka på mappen Temporär ASP.NET-filer och klicka sedan på Egenskaper.
  4. I dialogrutan Egenskaper för temporära ASP.NET filer klickar du på fliken Säkerhet .
  5. Klicka på Avancerat.
  6. I dialogrutan Access Control Inställningar för temporära ASP.NET filer klickar du på Lägg till.
  7. I dialogrutan skriver du användarnamnet i rutan Namn och klickar sedan på OK.
  8. I dialogrutan Behörighetspost för temporära ASP.NET filer ger du användaren fullständiga behörigheter och klickar sedan på OK för att stänga dialogrutan Egenskaper för temporära ASP.NET filer .

Referenser