11juil. 2008

L'upload de fichiers avec Symfony

Un ensemble d'astuces pour gérer les fichiers en upload et sur le disque.

Voici des tips pour la gestion de l'upload de fichiers.

Le code de base

Coté client :

<?php echo form_tag('media/upload', 'multipart=true') ?>
  <?php echo input_file_tag('file') ?>
  <?php echo submit_tag('Send') ?>
</form>

Coté serveur :

class mymoduleActions extends sfActions
{
  public function executeUpload($request)
  {
    if ($request->hasFiles())
    {
      foreach ($request->getFileNames() as $uploadedFile)
      {
        $fileName  = $request->getFileName($uploadedFile);
        $fileSize  = $request->getFileSize($uploadedFile);
        $fileType  = $request->getFileType($uploadedFile);
        $fileError = $request->hasFileError($uploadedFile);
        $uploadDir = sfConfig::get('sf_upload_dir');
        $request->moveFile($uploadedFile, 
                          $uploadDir.'/'.$fileName);
      }
    }
  }
}

Voici le code de base pour récupérer des fichiers uploadé. Avec symfony la request qu'on récupère via $this->getRequest() est en fait un sfWebRequest. On peut donc utiliser directement les méthode sfWebRequest sur cette objet.

Je préfère faire un nouvel objet sfWebRequest à partir de la request que je récupère pour que tout soit clair.

$webRequest = new sfWebRequest($this->getRequest());

Mais j'en fais quoi ?

aucun commentaire

Fil des commentaires de ce billet

Ajouter un commentaire

Le code HTML est affiché comme du texte et les adresses web sont automatiquement transformées.