Téléchargement de fichiers PHP
- Page précédente Création/écriture de fichiers PHP
- Page suivante Cookies PHP
Avec PHP, vous pouvez télécharger des fichiers sur le serveur.
Créer un formulaire de téléchargement de fichiers
Permettre aux utilisateurs de télécharger des fichiers à partir du formulaire est très utile.
Veuillez voir ci-dessous ce formulaire HTML pour télécharger des fichiers :
<html> <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="submit" name="submit" value="Soumettre" /> </form> </body> </html>
Veuillez noter les informations suivantes concernant ce formulaire :
L'attribut enctype du balise <form> stipule le type de contenu à utiliser lors de la soumission du formulaire. Utilisez "multipart/form-data" lorsque le formulaire nécessite des données binaires, telles que le contenu des fichiers.
L'attribut type="file" du balise <input> stipule que l'entrée doit être traitée comme un fichier. Par exemple, lorsque vous prévisualisez dans le navigateur, vous verrez un bouton de navigation à côté de la zone de saisie.
Remarque :Permettre aux utilisateurs de télécharger des fichiers est un risque de sécurité énorme. Seulement autorisez les utilisateurs de confiance à effectuer des opérations de téléchargement de fichiers.
Créer un script de téléchargement
"upload_file.php" fichier contient le code pour télécharger des fichiers :
<?php if ($_FILES["file"]["error"] > 0) { echo "Erreur: " . $_FILES["file"]["error"] . "<br />"; } else { echo "Téléchargement : " . $_FILES["file"]["name"] . "<br />"; echo "Type : " . $_FILES["file"]["type"] . "<br />"; echo "Taille : " . ($_FILES["file"]["size"] / 1024) . " Kb<br />"; echo "Enregistré dans: " . $_FILES["file"]["tmp_name"]; } ?>
En utilisant l'array global $_FILES de PHP, vous pouvez téléverser des fichiers depuis l'ordinateur client vers le serveur distant.
Le premier paramètre est le nom de l'élément input du formulaire, le deuxième index peut être "name", "type", "size", "tmp_name" ou "error". Voici comment :
- $_FILES["file"]["name"] - Nom du fichier téléversé
- $_FILES["file"]["type"] - Type du fichier téléversé
- $_FILES["file"]["size"] - Taille du fichier téléversé, en octets
- $_FILES["file"]["tmp_name"] - Nom de la copie temporaire du fichier stockée sur le serveur
- $_FILES["file"]["error"] - Code d'erreur dû au téléversement de fichiers
C'est une méthode de téléversement de fichiers très simple. Pour des raisons de sécurité, vous devriez ajouter des restrictions sur qui a le droit de téléverser des fichiers.
Restrictions de téléversement
Dans ce script, nous avons ajouté des restrictions sur le téléversement de fichiers. L'utilisateur ne peut téléverser que des fichiers .gif ou .jpeg, et la taille du fichier doit être inférieure à 20 kb :
<?php if ((($_FILES["file"]["type"] == "image/gif")) || ($_FILES["file"]["type"] == "image/jpeg") || ($_FILES["file"]["type"] == "image/pjpeg")) && ($_FILES["file"]["size"] < 20000)) { if ($_FILES["file"]["error"] > 0) { echo "Erreur: " . $_FILES["file"]["error"] . "<br />"; } else { echo "Téléchargement : " . $_FILES["file"]["name"] . "<br />"; echo "Type : " . $_FILES["file"]["type"] . "<br />"; echo "Taille : " . ($_FILES["file"]["size"] / 1024) . " Kb<br />"; echo "Enregistré dans: " . $_FILES["file"]["tmp_name"]; } } else { echo "Fichier invalide"; } ?>
Remarque :Pour IE, le type de fichier jpg doit être pjpeg, pour Firefox, il doit être jpeg.
Enregistrer le fichier téléversé
Dans cet exemple, une copie temporaire du fichier téléversé a été créée dans le dossier temporaire PHP du serveur.
Ce fichier de copie temporaire disparaîtra à la fin du script. Pour sauvegarder le fichier téléversé, nous devons le copier dans un autre emplacement :
<?php if ((($_FILES["file"]["type"] == "image/gif")) || ($_FILES["file"]["type"] == "image/jpeg") || ($_FILES["file"]["type"] == "image/pjpeg")) && ($_FILES["file"]["size"] < 20000)) { if ($_FILES["file"]["error"] > 0) { echo "Code de retour: " . $_FILES["file"]["error"] . "<br />"; } else { echo "Téléchargement : " . $_FILES["file"]["name"] . "<br />"; echo "Type : " . $_FILES["file"]["type"] . "<br />"; echo "Taille : " . ($_FILES["file"]["size"] / 1024) . " Kb<br />"; echo "Fichier temporaire : " . $_FILES["file"]["tmp_name"] . "<br />"; if (file_exists("upload/" . $_FILES["file"]["name"])) { echo $_FILES["file"]["name"] . " déjà existe. "; } else { move_uploaded_file($_FILES["file"]["tmp_name"], "upload/" . $_FILES["file"]["name"]); echo "Stocké dans : " . "upload/" . $_FILES["file"]["name"]; } } } else { echo "Fichier invalide"; } ?>
Le script ci-dessus vérifie si ce fichier existe déjà. S'il n'existe pas, il copie le fichier dans le dossier spécifié.
Remarque :Exemple : ce fichier a été sauvegardé dans un nouveau dossier nommé "upload".
- Page précédente Création/écriture de fichiers PHP
- Page suivante Cookies PHP