Pxxo_Widget_Input_File

Cet input permet à l'utilisateur d'envoyer un fichier sur le serveur. Ce widget permet de :

  • Envoyer un fichier sur le serveur
  • Pré-visualiser et/ou télé-charger le fichier envoyé (paramètre filepreview)

Remarques :

Paramètres

Ce widget partage une liste de paramètres génériques communs à tous les widgets Input. Veuillez consulter la documentation du widget Input pour connaître la liste des paramètres génériques.

Voici les paramètres spécifiques pour ce widget :

Nom Type Valeur par défaut Description
value Array array() On peut éventuellement indiquer un chemin vers un fichier (ou vers sa cible), un mime-type, et un nom de fichier pour utiliser la fonctionnalité de pré-visualisation du widget (cf section résultat pour la structure précise du tableau)
filepreview boolean true Active ou désactive la pré-visualisation du fichier envoyé (ou passé en paramètre) lors de l'initialisation du widget
filepreview_params array array() Permet d'envoyer des paramètres spécifiques aux widget FilePreview utilisé pour pré-visualiser les fichier envoyés.
generate_meta boolean true Active ou désactive la création automatique du fichier meta utilisé pour la pré-visualisation simplifiée des fichiers envoyés.
maxlength integer 0 Permet de limité coté client la taille en octets (0 signifie pas de limite) des fichier envoyés (Attention : à la date du 5 juin 2009, cet attribut n'est pas supporté par les navigateurs Web)
accept Array array() Contient la liste des “mime-types” de fichiers acceptées pour les envois. Exemple :
array("application/msword", "application/rtf")

(Attention : a la date du 4 juin 2009, cet attribut n'est pas supporté par les navigateurs Web)

Résultat

Le widget retourne un tableau descriptif du fichier qui a été envoyé. Le contenu du fichier envoyé est stocké dans un fichier temporaire sur le serveur (généré via la fonction tempnam(…)) . Voici la structure du tableau résultat :

  • clé file : le chemin du fichier temporaire contenant le fichier envoyé (à charge du développeur de le copier dans le fichier de destination final)
  • clé meta : les méta données associée au fichier envoyé
    • sous-clé name : le nom du fichier envoyé par le client (nom du fichier sur le poste du client)
    • sous-clé type : le mime-type du fichier envoyé (généré par le navigateur)
    • sous-clé size : la taille en octets du fichier envoyé

Remarque : Après envoi, un fichier de méta données sera créé automatiquement contenant les valeurs name, type et size vues ci-dessus. Par convention, le chemin de ce fichier sera basé sur celui du fichier envoyé (file). La chaîne de caractères ”.meta” lui sera suffixée pour générer le chemin du fichier de méta données. Par exemple : si un fichier est envoyé dans /tmp/monfichier, alors le fichier /tmp/monfichier.meta sera automatiquement généré.

Cette opération automatique permet au développeur de gérer la pré-visualisation des fichier envoyés à moindre coûts. Cependant ce comportement peut être gênant dans certains cas, on peut le désactiver avec le paramètre generate_meta.

Exemple

Dans cet exemple on se contente de recevoir un fichier et de récupérer son chemin (généré automatiquement par le widget) et ses méta-données lors du traitement des résultats :

require_once "Pxxo/Widget/Form.php";
$params = array();
$params['show_form_when_submit'] = true; // permet de pré-visualiser le fichier une fois envoyé
$params['inputs'] = array();
$params['inputs'][] = array('id'       => 'input_file',
                            'label'    => 'Mon fichier :',
                            'type'     => 'file'
                            );
 
$o = new Pxxo_Widget_Form($params);
$o->addDecorator('Pxxo_Widget_Decorator_Core');
$o->main();
 
if ($o->getMode() == 'submit') {
  $result = $o->getResult('input_file');
 
  // $result['file']; <- contiendra le chemin vers le fichier temporaire contenant le fichier qui vient d'être envoyé
  // $result['meta']['name']; <- contiendra le nom du fichier envoyé par le client (nom sur le poste du client)
  // $result['meta']['type']; <- contiendra le type-mime du fichier envoyé (indiqué par le navigateur Web)
  // $result['meta']['size']; <- contiendra la taille en octets du fichier envoyé
}
 
$o->dump();

Dans cet exemple on force la sauvegarde du fichier envoyé à un endroit précis sur le serveur (le fichier ne sera sauvegardé qu'une fois toutes les callback de validation passées) :

require_once "Pxxo/Widget/Form.php";
$params = array();
$params['show_form_when_submit'] = true; // permet de pré-visualiser le fichier une fois envoyé
$params['inputs'] = array();
$params['inputs'][] = array('id'       => 'input_file',
                            'label'    => 'Mon fichier :',
                            'type'     => 'file',
                             'value'   => array('file' => '/tmp/monfichier')
                            );
 
$o = new Pxxo_Widget_Form($params);
$o->addDecorator('Pxxo_Widget_Decorator_Core');
$o->main();
fr/doc/pxxo_widget_input_file.txt · Dernière modification: 2010/07/21 16:47 par kerphi
 
 

©2003-2010 Pxxo

Partenaires : INIST-CNRS | Sourcesup | Web2.0 chat server | Micropolia | Jeux gratuits | Areno