Upload de fichier avec Symfony

Un petit post pour expliquer l’upload de fichier via symfony 1.2 et surtout la gestion du nom du fichier uploadé.

Pour uploader un fichier rien de plus simple, et tout est expliqué ici: http://www.symfony-project.org/jobeet/1_2/Doctrine/en/10 le schema.yml

Image:
  tableName: table_image
  columns:
    name: { type: string(255), notnull: true }
    image: { type: string(255) }

dans le fichier ImageForm.class.php, on modifie le widget pour lui dire que c’est un input File, et le validator qui correspond

class ImageForm extends BaseImageForm
{
  public function configure()
  {
    $this->widgetSchema['image'] = new sfWidgetFormInputFile(array(
                                        'label' => 'Image',
                                         ));

    $this->validatorSchema['image'] = new sfValidatorFile(array(
                                        'required' => true,
                                        'path' => sfConfig::get('sf_upload_dir').'/images',
                                        'mime_types' => 'web_images',
                               ));

  }
}

Donc à partir de maintenant dans mon backend, je peux uploader les images MAIS elles sont renommées en md5.extension, ce qui est bien, mais pas top. Pour y remedier, je vais dans le model Image.class.php

class Image extends BaseImage
{
  public function generateImageFilename(sfValidatedFile $file)
  {
    return Sanitize::stripText($this->name).'_logo'.$file->getOriginalExtension();
  }
}

en créant une fonciton generateMonChampsFilename(), je peux choisir le nomdu me fichier uploadé, fichier qui passe en parametre de cette fonciton. Ici je lui donne la valeur de mon champs name. Pour l’API correspondante: http://www.symfony-project.org/api/1_2/sfValidatedFile

Voir l’étude de cas
Lire l’article
Voir le témoignage
Fermer