Partager via


Utiliser Visual C# pour charger un fichier sur un site Web

Cet article explique comment charger un fichier à l’aide de Microsoft Visual C#.

Version de produit d’origine : Visual C#, ASP.NET, Internet Information Services
Numéro de la base de connaissances d’origine : 816150

Introduction

Cet article pas à pas explique comment charger un fichier image existant à partir de votre disque dur local sur un site Web. Un contrôle d’entrée est utilisé pour charger une image à partir de votre ordinateur local. Ce fichier en cours de chargement est validé sur le serveur pour vous assurer que vous ne remplacez pas un fichier existant déjà chargé. Le fichier chargé est validé s’il existe sur le serveur. Cet article utilise l’attribut EncType du formulaire pour obtenir les fonctionnalités.

Spécifications

Cet article suppose que vous êtes familiarisé avec les rubriques suivantes :

  • Applications Web
  • ASP.NET

La liste suivante présente l’infrastructure réseau et logicielle recommandée dont vous avez besoin :

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

Créer un formulaire web ASP.NET

  1. Démarrez Visual Studio .NET ou Visual Studio.

  2. Dans le menu Fichier , pointez sur Nouveau, puis cliquez sur Projet.

    Note

    Dans Visual Studio, pointez sur Nouveau dans le menu Fichier, puis cliquez sur Site web.

  3. Sous Types de projets, cliquez sur Projets Visual C#. Sous Modèles, cliquez sur ASP.NET application web.

    Note

    Dans Visual Studio, sélectionnez Visual C# à droite du langage. Sous Modèles, cliquez sur ASP.NET site web.

  4. Dans la zone Emplacement , tapez l’emplacement suivant, puis cliquez sur OK :
    http://WebServerName/ApplicationName

    Note

    WebServerName est un espace réservé pour le nom de votre serveur web. ApplicationName est un espace réservé pour le nom de votre application.

    Par défaut, WebForm1.aspx est créé.

    Note

    Dans Visual Studio, sélectionnez HTTP à droite de l’emplacement, puis tapez <http://WebServerName>.

  5. Dans le menu Affichage , cliquez sur source HTML.

    Note

    Dans Visual Studio, cliquez sur Code dans le menu Affichage.

Modifier les attributs de formulaire

Dans la fenêtre HTML de WebForm1, remplacez la balise de formulaire par les éléments suivants :

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

L’attribut EncType spécifie le format des données publiées. Le navigateur utilise cet attribut pour encoder les informations publiées sur le serveur. L’attribut d’action dans ce code spécifie que la page traite la demande. Par défaut, l’attribut de méthode du formulaire est défini sur post afin que vous puissiez envoyer de grandes quantités de données dans la transaction.

Ajoutez le contrôle d’entrée pour spécifier le fichier que vous souhaitez charger sur le serveur

  1. Dans la fenêtre HTML de WebForm1, ajoutez le code suivant entre les balises d’ouverture et de fermeture <form> :

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

    Ce contrôle d’entrée spécifie le fichier que vous souhaitez charger sur le serveur.

  2. Vous pouvez ajouter une chaîne de texte devant le contrôle pour inviter l’utilisateur. Tapez le texte suivant devant le contrôle d’entrée dans la fenêtre HTML de WebForm1 :

    Sélectionnez le fichier image à charger sur le serveur :

Ajouter un contrôle Button

  1. Dans la fenêtre HTML de WebForm1, ajoutez le code suivant entre les balises d’ouverture et de fermeture<form>, après le code de contrôle d’entrée :

    <asp:button id="btnUpload" type="submit" text="Upload" runat="server"></asp:button>
    
  2. Ce contrôle Button est utilisé pour charger le fichier que vous avez spécifié dans le contrôle d’entrée.

Créer un contrôle Panel qui contient une étiquette unique pour afficher la sortie

Dans la fenêtre HTML de WebForm1, ajoutez le code suivant entre les balises d’ouverture et de fermeture<form>, après le code de contrôle Button :

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

Ce code est utilisé pour afficher le message pour indiquer si le chargement du fichier réussit. Pour afficher cette sortie, un contrôle Panel est créé qui contient une étiquette unique.

Charger le fichier sur l’événement Button Click

Le code de cette section récupère le fichier à partir du système de fichiers local, vérifie si le fichier existe déjà sur le serveur, puis charge le fichier sur le site Web. Pour ajouter ce code, procédez comme suit :

  1. Double-cliquez sur le bouton Charger créé dans la section Ajouter un contrôle Button de cet article pour créer un gestionnaire d’événements pour l’événement Click du contrôle bouton.

  2. Ajoutez le code suivant en haut de la fenêtre Code :

    using System.IO;
    
  3. Ajoutez le code suivant au Click gestionnaire d’événements pour le bouton Charger :

    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. Dans le menu Fichier , cliquez sur Enregistrer tout.

Vérifier que l’action de chargement fonctionne

  1. Dans le menu Débogage , cliquez sur Démarrer pour générer et exécuter l’application. Une zone de texte et un bouton de commande s’affichent.

  2. Tapez le chemin d’accès du fichier image dans la zone de texte, ou cliquez sur Parcourir pour localiser le fichier image sur votre ordinateur local.

  3. Cliquez sur Charger pour envoyer le fichier au serveur. Si le fichier est unique, vous recevez un message indiquant que le chargement a réussi. Si le fichier existe déjà sur le serveur, vous recevez un message approprié. Les fichiers que vous chargez à partir de cette application sont enregistrés à l’emplacement : C:\inetpub\wwwroot\ApplicationName sur le disque dur local.

  4. Pour que cette application fonctionne dans le .NET Framework, autorisez l’accès Contrôle total à l’utilisateur ASPNET . Pour ce faire, procédez comme suit :

    1. Recherchez le dossier d’application dans l’Explorateur Windows. Le chemin est C:\inetpub\wwwroot\ApplicationName.

    2. Cliquez avec le bouton droit sur le dossier ApplicationName , puis cliquez sur Propriétés. La boîte de dialogue Propriétés ApplicationName s’affiche.

    3. Cliquez sur l’onglet Security .

    4. Cliquez sur Ajouter. La boîte de dialogue Sélectionnez des utilisateurs ou des groupes s’affiche.

      Note

      Dans Visual Studio, la boîte de dialogue Sélectionner des utilisateurs, des ordinateurs ou des groupes s’affiche.

    5. Tapez ASPNET dans le champ Entrer les noms d’objets à sélectionner, puis cliquez sur OK.

    6. Dans la boîte de dialogue Propriétés ApplicationName, cliquez sur l’utilisateur ASPNET dans la liste des noms d’utilisateurs ou de groupes .

    7. Sous Autoriser, cliquez pour activer la case à cocher Contrôle total, puis cliquez sur OK.

Listing du code complet

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

Note

Le code généré dans Visual Studio est différent du code généré dans Visual Studio .NET.

Dépannage

  1. Ouvrez le fichier Machine.config situé sur votre ordinateur dans le dossier CONFIG sous le chemin d’accès où vous avez installé le runtime.
  2. Recherchez la <processModel> section dans le fichier Machine.config , modifiez les user attributs et le password nom et le mot de passe de l’utilisateur dans lequel vous souhaitez W3wp.exe ou Aspnet_wp.exe s’exécuter, puis enregistrez le fichier Machine.config .
  3. Recherchez le dossier Fichiers de ASP.NET temporaire situé dans le dossier CONFIG. Cliquez avec le bouton droit sur le dossier Fichiers de ASP.NET temporaires, puis cliquez sur Propriétés.
  4. Dans la boîte de dialogue Propriétés des fichiers ASP.NET temporaires , cliquez sur l'onglet Sécurité .
  5. Cliquez sur Avancé.
  6. Dans la boîte de dialogue Paramètres de contrôle d’accès pour les fichiers de ASP.NET temporaires, cliquez sur Ajouter.
  7. Dans la boîte de dialogue, tapez le nom d’utilisateur dans la zone Nom , puis cliquez sur OK.
  8. Dans la boîte de dialogue Entrée d’autorisation pour les fichiers de ASP.NET temporaires, accordez à l’utilisateur des autorisations complètes, puis cliquez sur OK pour fermer la boîte de dialogue Propriétés des fichiers de ASP.NET temporaires.

References