Tutoriel PHP

ACCUEIL PHP Introduction PHP Installation PHP Syntaxe PHP Commentaires PHP Variables PHP Écho PHP / Impression Types de données PHP Chaînes PHP Numéros PHP Mathématiques PHP Constantes PHP Opérateurs PHP PHP Si... Sinon... Sinon Commutateur PHP Boucles PHP Fonctions PHP Tableaux PHP Superglobales PHP Expression régulière PHP

Formulaires PHP

Gestion des formulaires PHP Validation de formulaire PHP Formulaire PHP requis URL/courriel du formulaire PHP Formulaire PHP terminé

PHP Avancé

Date et heure PHP Inclure PHP Gestion des fichiers PHP Fichier PHP Ouvrir/Lire Création/écriture de fichier PHP Téléchargement de fichier PHP Cookies PHP Séances PHP Filtres PHP Filtres PHP avancés Fonctions de rappel PHP PHPJSON Exception PHP

POO PHP

PHP Qu'est-ce que la POO Classes/Objets PHP Constructeur PHP Destructeur PHP Modificateurs d'accès PHP Héritage PHP Constantes PHP Classes abstraites PHP Interface PHP Caractéristiques PHP Méthodes statiques PHP Propriétés statiques PHP Espaces de noms PHP Itérables PHP

Base de données MySQL

Base de données MySQL Connexion MySQL Créer une base de données MySQL Créer une table MySQL MySQL Insérer des données MySQL obtenir le dernier ID MySQL Insérer plusieurs MySQL préparé MySQL Sélectionner les données MySQL Où Trier MySQL par MySQL Supprimer les données Données de mise à jour MySQL Données de limite MySQL

XML PHP

Analyseurs PHP XML Analyseur PHP SimpleXML PHP SimpleXML - Obtenir Expatriation PHP XML PHP XML DOM

PHP -AJAX

Introduction à AJAX PHP AJAX Base de données AJAX XML AJAX Recherche en direct AJAX Sondage AJAX

Exemples PHP

Exemples PHP Compilateur PHP Questionnaire PHP Exercices PHP Certificat PHP

Référence PHP

Présentation de PHP Tableau PHP Calendrier PHP Date PHP Annuaire PHP Erreur PHP Exception PHP Système de fichiers PHP Filtre PHP FTP PHP PHPJSON Mots clés PHP PHP LibxmlComment Messagerie PHP Mathématiques PHP Divers PHP PHP MySQL Réseau PHP Contrôle de sortie PHP Expression régulière PHP PHP SimpleXML Flux PHP Chaîne PHP Gestion des variables PHP Analyseur PHP XML Code postal PHP Fuseaux horaires PHP

Téléchargement de fichier PHP


Avec PHP, il est facile de télécharger des fichiers sur le serveur.

Cependant, la facilité vient avec le danger, alors soyez toujours prudent lorsque vous autorisez les téléchargements de fichiers !


Configurer le fichier "php.ini"

Tout d'abord, assurez-vous que PHP est configuré pour autoriser les téléchargements de fichiers.

Dans votre fichier "php.ini", recherchez la file_uploadsdirective et définissez-la sur On :

file_uploads = On

Créer le formulaire HTML

Ensuite, créez un formulaire HTML permettant aux utilisateurs de choisir le fichier image qu'ils souhaitent télécharger :

<!DOCTYPE html>
<html>
<body>

<form action="upload.php" method="post" enctype="multipart/form-data">
  Select image to upload:
  <input type="file" name="fileToUpload" id="fileToUpload">
  <input type="submit" value="Upload Image" name="submit">
</form>

</body>
</html>

Quelques règles à suivre pour le formulaire HTML ci-dessus :

  • Assurez-vous que le formulaire utilise method="post"
  • Le formulaire a également besoin de l'attribut suivant : enctype="multipart/form-data". Il spécifie le type de contenu à utiliser lors de la soumission du formulaire

Sans les exigences ci-dessus, le téléchargement de fichier ne fonctionnera pas.

Autres choses à noter :

  • L'attribut type="file" de la balise <input> affiche le champ d'entrée comme un contrôle de sélection de fichier, avec un bouton "Parcourir" à côté du contrôle d'entrée

Le formulaire ci-dessus envoie des données à un fichier appelé "upload.php", que nous créerons ensuite.



Créer le script PHP du fichier de téléchargement

Le fichier "upload.php" contient le code pour uploader un fichier :

<?php
$target_dir = "uploads/";
$target_file = $target_dir . basename($_FILES["fileToUpload"]["name"]);
$uploadOk = 1;
$imageFileType = strtolower(pathinfo($target_file,PATHINFO_EXTENSION));
// Check if image file is a actual image or fake image
if(isset($_POST["submit"])) {
  $check = getimagesize($_FILES["fileToUpload"]["tmp_name"]);
  if($check !== false) {
    echo "File is an image - " . $check["mime"] . ".";
    $uploadOk = 1;
  } else {
    echo "File is not an image.";
    $uploadOk = 0;
  }
}
?>

Script PHP expliqué :

  • $target_dir = "uploads/" - spécifie le répertoire où le fichier va être placé
  • $target_file spécifie le chemin du fichier à télécharger
  • $uploadOk=1 n'est pas encore utilisé (sera utilisé plus tard)
  • $imageFileType contient l'extension de fichier du fichier (en minuscules)
  • Ensuite, vérifiez si le fichier image est une image réelle ou une fausse image

Remarque : Vous devrez créer un nouveau répertoire appelé "uploads" dans le répertoire où réside le fichier "upload.php". Les fichiers téléchargés y seront enregistrés.


Vérifier si le fichier existe déjà

Maintenant, nous pouvons ajouter quelques restrictions.

Tout d'abord, nous allons vérifier si le fichier existe déjà dans le dossier "uploads". Si c'est le cas, un message d'erreur s'affiche et $uploadOk est défini sur 0 :

// Check if file already exists
if (file_exists($target_file)) {
  echo "Sorry, file already exists.";
  $uploadOk = 0;
}

Limiter la taille du fichier

Le champ de saisie de fichier dans notre formulaire HTML ci-dessus est nommé "fileToUpload".

Maintenant, nous voulons vérifier la taille du fichier. Si le fichier fait plus de 500 Ko, un message d'erreur s'affiche et $uploadOk est défini sur 0 :

// Check file size
if ($_FILES["fileToUpload"]["size"] > 500000) {
  echo "Sorry, your file is too large.";
  $uploadOk = 0;
}

Limiter le type de fichier

Le code ci-dessous permet uniquement aux utilisateurs de télécharger des fichiers JPG, JPEG, PNG et GIF. Tous les autres types de fichiers génèrent un message d'erreur avant de définir $uploadOk sur 0 :

// Allow certain file formats
if($imageFileType != "jpg" && $imageFileType != "png" && $imageFileType != "jpeg"
&& $imageFileType != "gif" ) {
  echo "Sorry, only JPG, JPEG, PNG & GIF files are allowed.";
  $uploadOk = 0;
}

Terminer le téléchargement du fichier PHP Script

Le fichier "upload.php" complet ressemble maintenant à ceci :

<?php
$target_dir = "uploads/";
$target_file = $target_dir . basename($_FILES["fileToUpload"]["name"]);
$uploadOk = 1;
$imageFileType = strtolower(pathinfo($target_file,PATHINFO_EXTENSION));

// Check if image file is a actual image or fake image
if(isset($_POST["submit"])) {
  $check = getimagesize($_FILES["fileToUpload"]["tmp_name"]);
  if($check !== false) {
    echo "File is an image - " . $check["mime"] . ".";
    $uploadOk = 1;
  } else {
    echo "File is not an image.";
    $uploadOk = 0;
  }
}

// Check if file already exists
if (file_exists($target_file)) {
  echo "Sorry, file already exists.";
  $uploadOk = 0;
}

// Check file size
if ($_FILES["fileToUpload"]["size"] > 500000) {
  echo "Sorry, your file is too large.";
  $uploadOk = 0;
}

// Allow certain file formats
if($imageFileType != "jpg" && $imageFileType != "png" && $imageFileType != "jpeg"
&& $imageFileType != "gif" ) {
  echo "Sorry, only JPG, JPEG, PNG & GIF files are allowed.";
  $uploadOk = 0;
}

// Check if $uploadOk is set to 0 by an error
if ($uploadOk == 0) {
  echo "Sorry, your file was not uploaded.";
// if everything is ok, try to upload file
} else {
  if (move_uploaded_file($_FILES["fileToUpload"]["tmp_name"], $target_file)) {
    echo "The file ". htmlspecialchars( basename( $_FILES["fileToUpload"]["name"])). " has been uploaded.";
  } else {
    echo "Sorry, there was an error uploading your file.";
  }
}
?>

Référence complète du système de fichiers PHP

Pour une référence complète des fonctions du système de fichiers, consultez notre Référence complète du système de fichiers PHP .