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é.
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 :
Ex :
$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();
▼Publicité