28 May 2009, Tagged in : doctrine, snippet, and symfony

Par défaut Symfony donne un nom de fichier hashé aux fichiers uploadés :

sha1($this->getOriginalName().rand(11111, 99999)).$this->getExtension($this->getOriginalExtension());

Rien de très explicite pour l’utilisateur qui va télécharger le fichier. Persuadé qu’une solution simple devait exister, une petite fouille dans les sources de Symfony s’imposa. Je note ici le résultat parce que je suis sûr que je l’aurai oublié d’ici quelques mois. Ça pourra aussi servir à quelqu’un (c’est aussi dans le tuto jobeet).

La solution est d’implémenter la méthode generate{ColonneDuFichier}Filename ($file) dans la classe du modèle qui va stocker le chemin vers le fichier. Exemple pour la colonne “certificat” :

public function generateCertificatFilename ($file)
{
  return "mynewfilename".$file->getExtension($file->getOriginalExtension());
}