Grâce à PHP, les fichiers peuvent être téléchargés sur le serveur.
Les exemples de ce chapitre sont réalisés dans le cadre du projet de test et la structure des répertoires est :
test|-----upload # Répertoire pour le téléchargement de fichiers|-----form.html # Fichier de formulaire|-----upload_file.php # Code de téléchargement PHP
Permettre aux utilisateurs de télécharger des fichiers à partir d'un formulaire est très utile.
Jetez un œil au formulaire HTML suivant pour télécharger des fichiers :
<html><head><meta charset="utf-8"><title>Tutoriel du codeur (codercto.com)</title></head><body><form action="upload_file.php" method=" post " enctype="multipart/form-data"> <label for="file">Nom du fichier :</label> <input type="file" name="file" id="file"><br> <input type ="soumettre" nom="soumettre" value="Soumettre"></form></body></html>
Enregistrez le code ci-dessus dans le fichier form.html.
Quelques notes sur le formulaire HTML ci-dessus sont répertoriées ci-dessous :
L'attribut enctype de la balise <form> spécifie le type de contenu à utiliser lors de la soumission du formulaire. Lorsqu'un formulaire nécessite des données binaires, telles que le contenu d'un fichier, utilisez " multipart/form-data ".
L'attribut type="file" de la balise <input> spécifie que l'entrée doit être traitée comme un fichier. Par exemple, lors de la prévisualisation dans un navigateur, vous verrez un bouton Parcourir à côté de la zone de saisie.
Remarque : Autoriser les utilisateurs à télécharger des fichiers constitue un risque de sécurité énorme. Veuillez autoriser uniquement les utilisateurs de confiance à effectuer des opérations de téléchargement de fichiers.
Le fichier "upload_file.php" contient le code pour télécharger des fichiers :
<?phpif ($_FILES["file"]["erreur"] > 0){ echo "Erreur :" . Nom du fichier de téléchargement : " . $_FILES["file"]["name"] . "<br>"; echo "Type de fichier : " . $_FILES["file"]["type"] . "<br>"; echo "Taille du fichier : " . ($_FILES["file"]["size"] / 1024) " ko<br>" ; echo "L'emplacement où le fichier est temporairement stocké : " . $_FILES[ "fichier"]["tmp_name"];}?>
En utilisant le tableau global $_FILES de PHP, vous pouvez télécharger des fichiers depuis l'ordinateur client vers un serveur distant.
Le premier paramètre est le nom d'entrée du formulaire et le deuxième indice peut être "name", "type", "size", "tmp_name" ou "error". Comme indiqué ci-dessous :
$_FILES["file"]["name"] - le nom du fichier téléchargé
$_FILES["file"]["type"] - Type de fichier téléchargé
$_FILES["file"]["size"] - Taille du fichier téléchargé, en octets
$_FILES["file"]["tmp_name"] - Le nom de la copie temporaire du fichier stocké sur le serveur
$_FILES["file"]["error"] - code d'erreur provoqué par le téléchargement du fichier
C'est un moyen très simple de télécharger des fichiers. Pour des raisons de sécurité, vous devez ajouter des restrictions sur les personnes autorisées à télécharger des fichiers.
Dans ce script, nous ajoutons des restrictions sur les téléchargements de fichiers. Les utilisateurs ne peuvent télécharger que des fichiers .gif, .jpeg, .jpg, .png, et la taille du fichier doit être inférieure à 200 Ko :
<?php// Suffixes d'image téléchargés autorisés $allowedExts = array("gif", "jpeg", "jpg", "png");$temp = éclater(".", $_FILES["file"][" name "]);$extension = end($temp); // Récupère le suffixe du fichier if ((($_FILES["file"]["type"] == "image/gif")|| ($_FILES["fichier"]["type"] == "image/jpeg")|| ($_FILES["fichier"]["type"] == "image/jpg")|| ($_FILES[ "fichier"]["type"] == "image/pjpeg")|| ($_FILES["fichier"]["type"] == "image/x-png")|| ($_FILES["file"]["type"] == "image/png"))&& ($_FILES["file"]["size"] < 204800) // Moins de 200 Ko&& in_array($extension, $ AllowExts)){ if ($_FILES["file"]["error"] > 0) { echo "Erreur :: " . $_FILES["fichier"]["erreur"] . "<br>" } else { echo "Nom du fichier de téléchargement : " . "Type de fichier : " . $_FILES["file"]["type"] . echo "Taille du fichier : " ($_FILES["file"]["size"] / 1024) . " kB<br>"; echo "L'emplacement où le fichier est temporairement stocké : " . $_FILES["file"]["tmp_name"];
L'exemple ci-dessus crée une copie temporaire du fichier téléchargé dans le dossier temporaire PHP du serveur.
Cette copie temporaire disparaîtra à la fin du script. Pour enregistrer le fichier téléchargé, nous devons le copier vers un autre emplacement :
<?php// Suffixes d'image téléchargés autorisés $allowedExts = array("gif", "jpeg", "jpg", "png");$temp = éclater(".", $_FILES["file"][" name "]);echo $_FILES["file"]["size"];$extension = end($temp); // Récupère le suffixe du fichier si ((($_FILES["file"]["type"] == "image/gif")|| ($_FILES["file"]["type"] == "image/jpeg")|| ($ _FILES["fichier"]["type"] == "image/jpg")|| ($_FILES["fichier"]["type"] == "image/pjpeg")|| ($_FILES["file"]["type"] == "image/x-png")|| ($_FILES["file"]["type"] == "image/png"))&& ($ _FILES["file"]["size"] < 204800) // Moins de 200 Ko&& in_array($extension, $allowedExts)){ if ($_FILES["file"]["error"] > 0) { echo "Erreur : " . $_FILES["file"]["error"] } else { echo "Télécharger le nom du fichier. : " . $_FILES["file"]["name"] . "<br>"; echo "Type de fichier : " . $_FILES["file"]["type"] . "<br>"; echo "Taille du fichier : " . ($_FILES["file"]["size"] / 1024) " ko<br>"; echo "L'emplacement où le fichier est temporairement stocké : " $_FILES["file"] ["tmp_name "] . "<br>"; // Détermine si le fichier existe dans le répertoire de téléchargement sous le répertoire actuel // S'il n'y a pas de répertoire de téléchargement, vous devez le créer. L'autorisation du répertoire de téléchargement est 777 si. (file_exists("upload/" . $_FILES["file"]["name"])) { echo $_FILES["file"]["name"] . "; } else { // Si le fichier n'existe pas dans le répertoire de téléchargement, téléchargez le fichier dans le répertoire de téléchargement move_uploaded_file($_FILES["file"]["tmp_name"], "upload/" . $_FILES["file "][ "name"]); echo "Le fichier est stocké dans : " . "upload/" . $_FILES["file"]["name"]; } }}else{ echo "Format de fichier illégal";}?>
Le script ci-dessus vérifie si le fichier existe déjà. S'il n'existe pas, il copie le fichier dans un répertoire nommé "upload".