IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Symfony PHP Discussion :

Envoi fichier et valeur de champs hidden [1.x]


Sujet :

Symfony PHP

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    82
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 82
    Par défaut Envoi fichier et valeur de champs hidden
    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:
    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;
      }
    }
    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.

    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
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $taille = $file->getSize();
    , pour le type:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $type = $file->getType();
    et pour l'extension
    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

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    82
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 82
    Par défaut
    Ok j'ai réussit à faire ce que je voulais. Voila comment j'ai fait:
    Code php : 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
    protected function processForm(sfWebRequest $request, sfForm $form)
      {
          $form->bind($request->getParameter($form->getName()), $request->getFiles($form->getName()));
          if ($this->form->isValid())
          {
            $file = $this->form->getValue('nom_fichier');
     
            $fichiers = $form->save();
     
            $fichiers->setTaille(number_format(round($file->getSize()/1000000,2), 2, ',', ' '));
            $fichiers->setType($file->getType());
            $fichiers->setExtension(substr($file->getExtension($file->getOriginalExtension()), 1));
            $fichiers->setIndexCreateur($this->getUser()->getGuardUser()->getId());
            $fichiers->save();
     
            $this->redirect('upload/edit?id='.$fichiers->getId());
          }
      }

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [AC-2003] valeur champ pour envoi fichier
    Par marcmarc150 dans le forum VBA Access
    Réponses: 3
    Dernier message: 10/12/2012, 14h49
  2. récupérer valeur d'un champ hidden
    Par noussa_88 dans le forum Servlets/JSP
    Réponses: 2
    Dernier message: 04/09/2009, 13h00
  3. Transmission de valeur de champs hidden
    Par patrios dans le forum Servlets/JSP
    Réponses: 1
    Dernier message: 30/04/2008, 00h21
  4. Introduire la valeur de retour d'un js dans un champ hidden html
    Par delma dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 28/02/2008, 14h30
  5. récupérer plusieurs valeurs dans un champ hidden
    Par karimphp dans le forum Langage
    Réponses: 3
    Dernier message: 07/12/2006, 17h13

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo