...
Actualités WEB et WordPress, thèmes, plugins. Ici, nous partageons des conseils et les meilleures solutions de sites Web.

Télécharger une image à l’aide de la bibliothèque Bulletproof en PHP

56

Le téléchargement d’une image sur le serveur est une tâche courante pour les développeurs. On peut avoir fait cette tâche des centaines de fois. Au cours de ce processus de téléchargement, les développeurs doivent prendre en charge les éléments suivants.

  • Vérifiez si le fichier téléchargé est une image
  • Créer un répertoire où les images seront stockées
  • Générez un nom unique pour chaque image afin qu’elle ne remplace pas celle existante avec le même nom.
  • Ajoutez éventuellement une validation pour la dimension d’une image. Si une image téléchargée a une dimension supérieure à celle spécifiée, une erreur est générée.

Ce sont les vérifications recommandées qu’un développeur doit suivre lors de l’écriture du code. On peut écrire des conditions pour toutes ces étapes dans le code. Mais cela demandera un peu de travail et le code devient long.

Je recommanderai d’utiliser la bibliothèque Bulletproof qui gère toutes ces étapes pour vous sous le capot. Cela vous évite d’ajouter de la logique à chaque étape et de réduire le nombre de lignes de votre code.

Bulletproof est un téléchargeur d’images sécurisé PHP, avec une belle API. Nous avons essayé cette bibliothèque pour notre projet et nous sommes assez satisfaits du résultat final. C’est pourquoi j’ai décidé de partager un mot sur cette bibliothèque avec nos lecteurs.

La bibliothèque Bulletproof possède les fonctionnalités suivantes dans son noyau, ce qui la rend plus sécurisée.

  • Utilise exif_imagetype() pour obtenir la véritable image mime (.extension)
  • Utilise getimagesize() pour vérifier si l’image a une hauteur/largeur valide en pixels.
  • Noms d’images aseptisés, autorisations strictes de dossier et plus encore…

Cela étant dit, voyons comment télécharger des images en PHP à l’aide de la bibliothèque Bulletproof.

Commencer

Pour commencer avec la bibliothèque Bulletproof, installez-la à l’aide de la commande Composer ci-dessous. Assurez-vous que Composer est installé sur le système.

composer require samayo/bulletproof:4.0.*

Ensuite, créez un formulaire HTML simple avec une entrée de fichier et un bouton d’envoi.

<form method="POST" enctype="multipart/form-data">
    <p><input type="file" name="image" accept="image/*" required /></p>
    <input type="submit" name="submit" value="Upload" />
</form>

Télécharger une image à l’aide de la bibliothèque Bulletproof

Nous sommes fixés avec une bibliothèque et un formulaire HTML. Ajoutons maintenant un code fourni par la bibliothèque qui télécharge une image sur le serveur.

<?php
require_once 'vendor/autoload.php';
 
if (isset($_POST['submit'])) {
 
    $file = new BulletproofImage($_FILES);
 
    $file->setLocation('uploads');
 
    if ($file["image"]) {
        $upload = $file->upload();
 
        if ($upload) {
            echo $upload->getFullPath();
        } else {
            echo $file->getError();
        }
    }
}
?>

Vous avez terminé. Allez-y et testez-le. Vous verrez vos images stockées dans le dossier « téléchargements » avec un nom unique. L’utilisateur peut changer cet emplacement avec autre chose.

Si vous essayez de télécharger des fichiers autres que des images, vous obtiendrez une erreur. Juste au cas où, si vous souhaitez également définir la dimension, ajoutez l’instruction ci-dessous dans le code ci-dessus.

$file->setDimension(600, 400);

Ici, ‘600’ est la largeur de l’image et ‘400’ est la hauteur d’une image. Ajustez les valeurs selon vos besoins.

Télécharger plusieurs images à l’aide de la bibliothèque Bulletproof

Vous voudrez peut-être télécharger plusieurs images sur un serveur à l’aide de cette bibliothèque. Cela nécessite un peu de changement dans le code ci-dessus. Vous devez ajouter un attribut ‘multiple’ à l’entrée du fichier. Utilisez également le format de tableau pour le nom du fichier d’entrée. Après cela, nous allons parcourir chaque image et la télécharger sur le serveur comme suit.

<?php
require_once 'vendor/autoload.php';
 
if (isset($_POST['submit'])) {
    for($i = 0; $i < count($_FILES['image']['name']); $i++) {
  
        $arr_file = array(
            "name" => $_FILES['image']['name'][$i],
            "type" => $_FILES['image']['type'][$i],
            "tmp_name" => $_FILES['image']['tmp_name'][$i],
            "error" => $_FILES['image']['error'][$i],
            "size" => $_FILES['image']['size'][$i],
        );
  
        $file = new BulletproofImage($arr_file);
  
        $file->setLocation('uploads');
  
        $upload = $file->upload();
    }
}
?>
<form method="POST" enctype="multipart/form-data">
    <p><input type="file" name="image[]" accept="image/*" multiple required /></p>
    <input type="submit" name="submit" value="Upload" />
</form>

C’est ça! J’espère que vous comprenez comment télécharger une image via la bibliothèque Bulletproof. S’il vous plaît partager vos pensées et suggestions dans la section commentaires ci-dessous.

Articles Liés

Source d’enregistrement: artisansweb.net

Ce site utilise des cookies pour améliorer votre expérience. Nous supposerons que cela vous convient, mais vous pouvez vous désinscrire si vous le souhaitez. J'accepte Plus de détails