Partager via


Comment : télécharger des fichiers avec le contrôle serveur Web FileUpload

Mise à jour : novembre 2007

Le contrôle serveur Web FileUpload vous permet de fournir aux utilisateurs un moyen d'envoyer un fichier de leur ordinateur au serveur. Le fichier à télécharger est soumis au serveur en tant que partie de la demande du navigateur lors de la publication. Une fois le téléchargement terminé, vous pouvez gérer le fichier dans votre code.

Remarque :

Le téléchargement du fichier de taille maximale dépend de la valeur du paramètre de configuration MaxRequestLength. Si les utilisateurs essaient de télécharger un fichier qui dépasse la taille maximale, le téléchargement échoue.

Pour télécharger un fichier à l'aide du contrôle serveur Web FileUpload

  1. Ajoutez un contrôle FileUpload à la page.

    Remarque :

    Pour des raisons de sécurité, vous ne pouvez pas précharger le nom d'un fichier dans le contrôle FileUpload.

  2. Dans un gestionnaire d'événement, par exemple l'événement Load de la page, effectuez les opérations suivantes :

    1. Vérifiez que le contrôle FileUpload possède un fichier téléchargé en testant sa propriété HasFile.

    2. Vérifiez le nom de fichier ou le type MIME du fichier pour vous assurer que les utilisateurs ont téléchargé un fichier que vous souhaitez accepter. Pour vérifier le type MIME, obtenez l'objet HttpPostedFile en tant que propriété PostedFile du contrôle FileUpload. Vous pouvez ensuite obtenir le type MIME en vérifiant la propriété ContentType du fichier publié.

      Note de sécurité :

      Les types MIME des fichiers téléchargés peuvent être usurpés dans certaines circonstances. Ainsi, la seule vérification du type MIME du fichier ne constitue pas une vérification de la sécurité fiable.

    3. Enregistrez le fichier dans un emplacement que vous spécifiez. Vous pouvez appeler la méthode SaveAs de l'objet HttpPostedFile. Vous pouvez également gérer le fichier téléchargé en tant que tableau d'octets ou flux à l'aide de la propriété InputStream de l'objet HttpPostedFile.

    L'exemple suivant montre comment utiliser un fichier téléchargé. Le code vérifie l'extension du fichier téléchargé par rapport à une liste codée en dur des extensions de nom de fichier autorisées et rejette tous les autres types de fichiers. Le fichier est ensuite écrit dans un dossier UploadedImages du site Web actuel. Le fichier téléchargé est enregistré sous le même nom qu'il possédait sur l'ordinateur client. La propriété FileName du contrôle FileUpload est utilisée parce que la propriété FileName de l'objet HttpPostedFile retourne le chemin complet du fichier de l'ordinateur client.

    Note de sécurité :

    N'affichez pas le chemin et le nom du fichier enregistrés pour les utilisateurs ; sinon, des informations utiles peuvent être divulguées aux utilisateurs malveillants.

    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.";
            }
        }
    }
    

Voir aussi

Concepts

Vue d'ensemble du contrôle serveur Web FileUpload