Bonjour à tous,
je suis toujours avec mon problème d'envoi de fichier (la barre de progression, je la finirait plus tard et si jamais j'ai besoin d'aide, je reviendrai vous voir). Cependant, j'aimerais insérer dans ma base de données quelques données sur le fichier uploadé (comme sa taille, son type et son extension).
Pour se faire j'ai un formulaire qui est généré dont j'ai caché les champs correspondant:
J'ai donc aussi créer une méthode permettant de surcharger la generation du nom du fichier par une generation plus explicite mais tout aussi personnelle.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40 <?php class FichiersForm extends BaseFichiersForm { public function configure() { unset( $this['created_at'], $this['updated_at'], $this['index_modificateur'] ); $this->useFields(array('titre', 'famille', 'importance', 'nom_fichier', 'description', 'taille', 'extension', 'index_createur', 'type')); $this->widgetSchema['nom_fichier'] = new sfWidgetFormInputFile(array( 'label' => 'Fichier', )); $this->validatorSchema['nom_fichier'] = new sfValidatorFile(array( 'required' => false, 'path' => sfConfig::get('sf_upload_dir').'/fichiers', )); $this->widgetSchema['taille'] = new sfWidgetFormInputHidden(); $this->widgetSchema['extension'] = new sfWidgetFormInputHidden(); $this->widgetSchema['index_createur'] = new sfWidgetFormInputHidden(); $this->widgetSchema['type'] = new sfWidgetFormInputHidden(); } public function generateNomFichierFilename(sfValidatedFile $file) { $date = strftime("%d%m%Y"); $temps = strftime("%H%M%S"); $nom_fichier = strtr(utf8_decode(substr($file->getOriginalName(),0, strlen($file->getOriginalName())-4)), utf8_decode("ÂÊÎÔÛÀ"), "AEIOU"); $filename = ''.$nom_fichier.'_'.$date.'_'.$temps.$file->getExtension($file->getOriginalExtension()); return $filename; } }
Pour l'instant, dans mon action.class.php, il n'y a rien de grandiose. je sais que pour récupérer la taille, il faut que je fasse, pour le type:
Code : Sélectionner tout - Visualiser dans une fenêtre à part $taille = $file->getSize();et pour l'extension
Code : Sélectionner tout - Visualiser dans une fenêtre à part $type = $file->getType();.
Code : Sélectionner tout - Visualiser dans une fenêtre à part $extension = $file->getExtension($file->getOriginalExtension());
Mais comment insérer ces variables dans la base de données avec les autres valeurs transmises par le formulaire??
Merci de votre aide
Partager