Convertit les caractères spéciaux en entités HTML
Avec PHP, il est possible de télécharger des fichiers vers le serveur.
Un aspect très utile de PHP est sa capacité à gérer les téléchargements de fichiers sur votre serveur.
Permettre aux utilisateurs de télécharger un fichier sur votre serveur peut être la cause d’une catastrophe, donc s'il vous plaît soyez prudent lorsque vous activez le téléchargement de fichiers.
Avec PHP, il est possible de télécharger des fichiers vers le serveur.
Permettre aux utilisateurs de télécharger des fichiers à partir d'un formulaire peut être très utile.
Regardez le formulaire HTML suivant pour télécharger des fichiers:
Exemple : Copier le code
<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="Evoyer" /> </form> </body> </html>
Regardons ce qui se passe dans le formulaire HTML ci-dessus:
Lorsque l'utilisateur clique sur Envoyer, les données seront affichées sur le serveur et l'utilisateur sera redirigé vers le fichier upload_file.php. Ce fichier PHP va traiter les données du formulaire et faire tout le travail.
Note: Permettre aux utilisateurs de télécharger des fichiers présente un gros risque de sécurité. Alors faites très attention
Le "upload_file.php" est le fichier qui contient le code pour télécharger un fichier:
Code de « upload_file.php » :
Exemple : Copier le code
<?php if ($_FILES["file"]["error"] > 0) { echo "Error: " . $_FILES["file"]["error"] . "<br />"; } else { echo "Fichier à télécharger : " . $_FILES["file"]["name"] . "<br />"; echo "Type : " . $_FILES["file"]["type"] . "<br />"; echo "Taille : " . ($_FILES["file"]["size"] / 1024) . " Kb<br />"; echo "Stocké dans : " . $_FILES["file"]["tmp_name"]; } ?>
En utilisant le tableau $_FILES de PHP vous pouvez télécharger des fichiers depuis un ordinateur client vers le serveur distant.
Les éléments de ce tableau sont comme suit:
L’exemple précèdent est un moyen très simple de télécharger des fichiers. Mais pour des raisons de sécurité, vous devez ajouter des restrictions sur ce que l'utilisateur peut télécharger.
Dans ce script nous ajoutons certaines restrictions à l'upload de fichier. L'utilisateur peut seulement télécharger des fichiers gif ou jpeg et la taille du fichier doit être de moins de 20 ko..:
Code de « upload_file.php » :
Exemple : Copier le code
<?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 "Error: " . $_FILES["file"]["error"] . "<br />"; } else { echo "Upload: " . $_FILES["file"]["name"] . "<br />"; echo "Type: " . $_FILES["file"]["type"] . "<br />"; echo "Size: " . ($_FILES["file"]["size"] / 1024) . " Kb<br />"; echo "Stored in: " . $_FILES["file"]["tmp_name"]; } } else { echo "Invalid file"; } ?>
Remarque: Pour que IE reconnaît les fichiers jpg le type doit être pjpeg, pour FireFox il doit être JPEG.
Les exemples ci-dessus créer une copie temporaire des fichiers téléchargés dans le dossier temp de PHP sur le serveur.
Les fichiers temporaires copiés disparaissent lorsque le script se termine. Pour stocker le fichier téléchargé nous avons besoin de le copier vers un autre emplacement:
Code de « upload_file.php » :
Exemple : Copier le code
<?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 "Return Code: " . $_FILES["file"]["error"] . "<br />"; } else { echo "Fichier à télécharger : " . $_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 " Le fichier".$_FILES["file"]["name"] . " existe déjà à cette emplacement. "; } else { move_uploaded_file($_FILES["file"]["tmp_name"], "upload/" . $_FILES["file"]["name"]); echo "Enregistré dans : " . "upload/" . $_FILES["file"]["name"]; } } } else { echo "Chemin invalide !!"; } ?>
Le script ci-dessus vérifie si le fichier existe déjà, si non, il copie le fichier vers le dossier spécifié.
Note: Cet exemple enregistre le fichier dans un sous dossier appelé "upload" qui existe dans le même dossier que le fichier « upload_file.php »