Formation PUB030 : Laravel, 2019 Téléversement d'images ou de fichiers

42.4 Renommer un fichier avant son téléversement


Le nom d'un fichier dans un dossier doit être unique. Lorsqu'on permet aux internautes de téléverser des images ou autres types de fichiers, il faut mettre en place un mécanisme qui empêchera un internaute d'écraser un fichier téléversé par un autre internaute lorsque les deux fichiers portent le même nom.

Il faut également tenir compte du référencement lorsqu'on renomme un fichier. En effet, le nom du fichier est important aux yeux de Google. C'est pourquoi on évitera d'utiliser une simple chaîne aléatoire pour nommer un fichier.

Notez que l'extension du fichier doit demeurer inchangée puisqu'elle indique au système d'exploitation comment le fichier est encodé.

Ajustement du nom du fichier

Tout d'abord, si on désire conserver le nom original du fichier comme faisant partie du nouveau nom, il faut le passer dans un filtre (ex : fonction maison stringToSlug()), afin de lui enlever tout espace, caractère accentué ou caractère spécial.

Il faut ensuite faire le nécessaire pour que le nom du fichier soit unique.

Quelques techniques permettent d'ajuster le nom du fichier afin de le rendre unique tout en favorisant le bon référencement :

  • Concaténer une chaîne unique (ex : utilisation de la fonction PHP uniqid()) au nom original du fichier. Par exemple, Parasol.png deviendra Parasol-58b4c5b6ebc2a.png. Attention : il faut ajouter la concaténation avant l'extension du fichier...

    Ex :

    Contrôleur Laravel (PHP)

    $file = $request->file('fichier');   // 'fichier' est l'attribut name du <input type="file">

    $nomFichierOriginal = pathinfo($file->getClientOriginalName(), PATHINFO_FILENAME);

    $nomFichier = stringToSlug($nomFichierOriginal) . '-' . uniqid();

    $extension = $file->extension();

  • Ajouter un nombre au nom du fichier lorsqu'on rencontre un fichier du même nom dans le dossier de téléversement. Par exemple, Parasol.png deviendra Parasol-1.png seulement si un Parasol.png est déjà présent ou Parasol-2.png si Parasol-1.png est déjà présent, et ainsi de suite.
  • Complètement changer le nom du fichier afin d'utiliser une information unique sur l'enregistrement auquel l'image réfère. On ajoutera ensuite une autre information utile pour le référencement (ex : pour une photo de profil, login suivi du nom de l'usager; pour une image de produit, code de produit suivi de sa description). Il faudra passer le nouveau nom dans le filtre pour lui enlever tout espace, caractère accentué ou caractère spécial.

▼Publicité

Veuillez noter que le contenu de cette fiche vous est partagé à titre gracieux, au meilleur de mes connaissances et sans aucune garantie.
Merci de partager !
Soumettre