Blogdevphp

Codeigniter : Upload de fichier

2013-09-21 codeigniter

On est amené, très souvent, à créer des formulaires pour le téléchargement d'images, de fichiers Word, de fichiers PDF... 

On doit contrôler la taille des fichiers, le type .. 

Le framework Codeigniter possède une classe pour le téléchargement de fichiers.

La classe ' Upload ' va nous permettre de configurer notre système d'upload, selon des critères bien définis.  On va créer un formulaire pour le téléchargement d'un avatar, mettre en place une méthode dans le contrôleur et enfin enregistrer le fichier en base de données.

Créer un formulaire

On va créer un simple formulaire qui sera enregistré dans le dossier applications/views.

<form action="user/add_avatar" method="post" accept-charset="utf-8" enctype="multipart/form-data">
<input type="file" name="userAvatar"/><br/><br/>
<input type="submit" value="upload" />

Concernant le téléchargement du fichier, l'attribut enctype, doit être mentionné dans la balise form. La valeur de cet attribut est multipart/form-data car on a déclaré le type file dans la balise input.

Le contrôleur

On aura la méthode "add_avatar" dans le contrôleur user situé dans application/controllers/.

<?php
  public function add_avatar{
  
    $config['upload_path'] = './assets/avatars/';
    $config['allowed_types'] = 'gif|jpg|png';
    $config['max_size'] = '2048';
    $config['max_width'] = '35';
    $config['max_height'] = '20';
    $this->load->library('upload', $config);
    
      if (!$this->upload->do_upload('userAvatar') == TRUE) 
      {
        $this->load->view('form_avatar');
      }
      else
      {
        $this->user_model->load_avatar();
        redirect('accueil');
      }
  
  }
?>

On a défini nos préférences pour le téléchargement de fichier : 

  • $config['upload_path'] : le répertoire de destination.

  • $config['allowed_types'] : le type d'images accepté.

  • $config['max_size'] : la taille maximum du fichier exprimé en kilobytes.

  • $config['max_width'] : largeur maximum.

  • $config['max_height'] : hauteur maximum.

Il est possible de spécifier, d'autres attributs, toutes présentées sur le guide officiel de Codeigniter.

Le modèle

L'enregistrement du nom de fichier téléchargé se fera avec "load_avatar" dans le modèle user dans applications/models/.

Pour le nom du fichier, on utilise $this->upload->data, tableau retournant un certain nombre de valeurs, dont le nom du fichier téléchargé.

<?php
public function load_avatar() {
  $upload_data = $this->upload->data();
  $this->db->set('user_avatar', $upload_data['file_name']);
  return $this->db->insert('avatar');  
}
 
?>

On indique 'user_avatar' , le champ de la table 'avatar' où va être stocké le nom du fichier avec $upload_data['file_name'].

comments powered by Disqus
Copyright © 2018 blogdevphp.fr - Tous droits réservés