Vous êtes sur la page 1sur 4

École régionale du numérique - Développement d'une application Web

2018 – 2019

Cours PHP
n°5

M. Ducongé - Barrère 1/4


École régionale du numérique - Développement d'une application Web
2018 – 2019

Upload de fichiers ...................................................................................................................................... 3


Introduction ......................................................................................................................................................... 3
Construction du formulaire .................................................................................................................................. 3
Récupération des données ................................................................................................................................... 3
Sécurité ................................................................................................................................................................ 4
Déplacement du fichier ........................................................................................................................................ 4

M. Ducongé - Barrère 2/4


École régionale du numérique - Développement d'une application Web
2018 – 2019
UPLOAD DE FICHIERS

Introduction

L’upload de fichier ou téléversement, est un système permettant d’envoyer sur un serveur un


ou plusieurs fichiers. Pour ce faire il faut utiliser du HTML pour le formulaire et du PHP pour le
traitement de données.

Construction du formulaire

Pour permettre à un utilisateur de mettre en ligne un fichier, il faut spécifier dans le formulaire
que des fichiers seront à transmettre. Cela se passe dans la balise ouvrante « <form> », dans
son en-tête, comme ci-dessous :
<form method="post" action="" enctype="multipart/form-data">

La valeur de la propriété « enctype » permet d’indiquer que le contenu des données à passer
lors de la validation du formulaire sera de type binaire (fichiers) et texte (champs du
formulaire).

Il faut maintenant ajouter un bouton pour que l’utilisateur puisse sélectionner le fichier qu’il
désire envoyer. Afin d’afficher un bouton « Parcourir » dans le formulaire, il faut spécifier un
champ de type « file » comme ci-dessous.
<input type="file" name="fichier" id="fichier"/>

Bien évidemment, vous pouvez mélanger des champs textes et fichiers dans un même
formulaire. Faites attention au nom pour bien les différencier. Pour ce qui est de la validation,
rien ne change par rapport à un formulaire classique.

Récupération des données

Pour récupérer les données, il faut bien sûr passer par du PHP. Les fichiers transférés via un
formulaire possèdent une variable serveur dédiée « $_FILES ». Elle s’utilise exactement de la
même manière que « $_POST » mais comporte des données spécifiques pour chaque fichier
envoyé comme son nom d’origine, son type, son poids et son nom temporaire. Voir doc PHP.

Tout comme pour le « $_POST » , le fichier est identifié par la valeur dans le « name » de l’input.
Exemple pour récupérer le nom du fichier :
$_FILES['fichier']['name']

Le fichier est mis dans un répertoire temporaire en attendant son déplacement vers son
répertoire définitif. Il possède alors un nom lui aussi temporaire, ressemblant à une chaîne de
caractères du type « phpSjsuHO ».

M. Ducongé - Barrère 3/4


École régionale du numérique - Développement d'une application Web
2018 – 2019
Sécurité

L’upload de fichier est un élément sensible. Il faut penser à vérifier l’extension, voir
« SplFileInfo() », la taille du fichier et lui donner un nom unique.

L’utilisateur ne peut pas mettre en ligne des fichiers très lourd. Il y a une limitation définie par
le serveur dans « upload_max_filesize » à 2Mo par défaut. Cette valeur est modifiable mais
attention au timeout.

Déplacement du fichier

Comme indiqué précédemment, le fichier est dans un répertoire temporaire. Il va falloir le


déplacer vers sa destination finale.

NB : Vous pouvez créer dynamiquement un répertoire en PHP avec « mkdir() » ou encore


vérifier qu’un dossier exite avec « file_exist() ».

Une fois la vérification des données du fichier faite et que le répertoire existe, le fichier peut
être déplacé. PHP intègre nativement une fonction répondant à cette fonctionnalité,
« move_uploaded_file() ». Elle retournera false si une erreur survient et true si tout se passe
correctement.

Attention, vous devez avoir les droits en écriture sur le répertoire sinon votre fichier ne sera
pas déplacé.

M. Ducongé - Barrère 4/4