Damien Flandrin

Tutoriels, astuces et conseils sur le développement web par un développeur web

Uploader rapidement vos images avec le package Arcadia

il y a 2 ans · 2 MIN DE LECTURE
#packages   #PHP 

Si vous cherchez une solution simple et rapide pour uploader vos images sans vous prendre la tête, je vous présente Arcadia, un package développé par Legiai Fenix. Il a pour but de simplement se charger de l’upload d’images vers le chemin que vous souhaitez. Elle ne comportent que 3 fonctions pour l’instant.

  • uploadImage() | Ajouter une image
  • listImages() | Lister les images du dossier
  • deleteImage() | Supprimer les images du dossier

Initialiser Factory

Avant de commencer, on vas devoir initialiser Factory. Factory nécessite que vous fournissiez déjà le chemin où vous désirez stocker vos images. Si elle n'est pas fournie, elle utilisera la valeur par défaut comme public et uploads. Si vous fournissez les premiers arguments, il gardera votre structure de dossier pour stocker les images.

new ArcadiaFactory('web', 'uploads');

Par défaut, Arcadia limite la taille des images à 2mo mais vous pouvez spécifier en paramètre pendant l’initialisation un paramètre comme 10mo. ( n'oubliez pas de modifier dans php.ini la taille maximale autorisée durant l'upload ).

 new ArcadiaFactory('public', 'uploads', 10000);

Uploader une image

Nous pouvons commencer à uploader une image en passant le paramètre de champ par notre Factory.

$arcadiaF = new ArcadiaFactory('public', 'uploads');
$arcadiaF->getFactory()->uploadImage('img');

Si aucun chemin n'est spécifié lors de l’upload, il suivra une structure similaire à Wordpress à l'intérieur du dossier cible spécifié lors de l’initialisation de notre Factory. Mais si vous souhaitez spécifier un dossier différent, vous pouvez ajouter votre chemin. Arcadia va vérifier si le chemin existe ou non, si il n’existe pas, il va le créer puis upload votre image.

$arcadiaF = new ArcadiaFactory('public', 'uploads');
$arcadiaF->getFactory()->uploadImage('img', 'tmp');

Le champ img existe sous la forme d'un input html de type file:

<input type="file" name="img">

Lister les images

Grâce à cette structure de dossier similaire à celle de Wordpress, vous pouvez spécifier la date, le nombre ainsi que le type de fichier que vous recherchez.

$factory->getFactory()->listImages('uploads/2017/02/', 5, 'jpg');

Résultat :

array(3) {
      [0]=>
      string(80) "/var/www/frame-tester/public/uploads/2017/02/04-02-2017_03-28-42_test_original.jpg"
      [1]=>
      string(80) "/var/www/frame-tester/public/uploads/2017/02/04-02-2017_03-46-13_test_original.jpg"
      [2]=>
      string(80) "/var/www/frame-tester/public/uploads/2017/02/04-02-2017_03-46-18_test_original.jpg"
    }

Supprimer des images depuis un dossier

Il suffit de passer le chemin pour l'image avec le nom de l'image, le programme le supprimera s’il existe. Arcadia supprime uniquement des images car il vérifie s'il s'agit bien d'une image avant de supprimer le fichier. Les types d’images acceptées sont les suivantes:

  • svg
  • png
  • jpeg
  • jpg
  • gif

Vous pouvez également supprimer toutes les images d'un dossier en utilisant la fonction listImages() puis avec une boucle for, utiliser la fonction pour supprimer une image deleteImage() :

$list = $factory->getFactory()->listImages('/uploads/2017/02');
foreach ($list as $item) {
    $factory->getFactory()->deleteImage($item);
}

Pour supprimer uniquement les gifs :

$list = $factory->getFactory()->listImages('/uploads/2017/02', 'gif');
foreach ($list as $item) {
    $factory->getFactory()->deleteImage($item);
}

N’hésitez pas à visiter le dépôt github de Arcadia pour les dernières mises à jour : https://github.com/legiaifenix/arcadia

···

Damien Flandrin

Je suis développeur web pour l'agence Carredas, je fais principalement du PHP avec Laravel et Prestashop.
comments powered by Disqus


Développeur Web - Damien Flandrin