Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Bonjour,
Actuellement sur une opération d'export et d'import des données j'ai une petite question que je n'arrives pas à résoudre.
Lors de la phase d'upload j'autorise uniquement les fichiers "*.csv" et "*.xls" ! Quand la boîte de dialogue s'ouvre (formulaire Zend_Form_Element_File), permettant d'aller chercher les fichiers sur le disque, cette dernière m'affiche "tout les fichiers"...
Comment remplacer dans la boîte de dialogue "tout les fichiers" par les extensions que je désires (*.csv / *.xls) ! ?
Comment faire ?
/* Création zone de liste de langue */ $element_file = new Zend_Form_Element_File('import_langue'); $element_file->setLabel("Langues à exporter") ->setRequired(true) ->addFilter('StripTags') ->addValidator('Extension', TRUE, 'csv,xls') ->addValidator(new Zend_Validate_File_MimeType('text/csv', 'application/vnd.ms-excel')); $element_file->class = "import_export_zone_liste"; $element_file->addError('Humm...mauvais type de fichier (*.csv ou *.xls) !'); /* Création bouton submit */ $submit_button = new Zend_Form_Element_Submit('submit_export_donnees'); $submit_button->setLabel("Exporter les données"); $submit_button->setValue("Valider"); /* ajouter l'ensemble dans un tableau */ $elements = array($element_file, $submit_button); $form_import = $this->addElements($elements);
D'avance merci
++
Hors ligne
Dans ta balise <input type="file"> il faut ajouter l'attribut "accept=...".
Tu as le détail du truc à la page suivante :
http://fr.selfhtml.org/html/formulaires … ichier.htm
Voilà un extrait :
Si vous ne voulez accepter que certains types de fichiers, vous pouvez grâce à la mention accept= limiter les types de fichiers permis (accept = accepter). Derrière le signe égal, vous pouvez mentionner un Autre page d'information type Mime. Pour cela les jokers (*) sont aussi permis. Dans l'exemple ci-dessus tous les fichiers texte sont acceptés grâce à text/*. En font partie de purs fichiers texte(*.txt) , mais aussi les fichiers HTML (*.html,*.htm). Ne vous fiez pas trop non plus à cette mention pour que le navigateur vérifie réellement le type avant l'envoi du fichier.
A+, Philippe
Hors ligne
philippe a écrit:
Dans ta balise <input type="file"> il faut ajouter l'attribut "accept=...".
Tu as le détail du truc à la page suivante :
http://fr.selfhtml.org/html/formulaires … ichier.htm
Voilà un extrait :Si vous ne voulez accepter que certains types de fichiers, vous pouvez grâce à la mention accept= limiter les types de fichiers permis (accept = accepter). Derrière le signe égal, vous pouvez mentionner un Autre page d'information type Mime. Pour cela les jokers (*) sont aussi permis. Dans l'exemple ci-dessus tous les fichiers texte sont acceptés grâce à text/*. En font partie de purs fichiers texte(*.txt) , mais aussi les fichiers HTML (*.html,*.htm). Ne vous fiez pas trop non plus à cette mention pour que le navigateur vérifie réellement le type avant l'envoi du fichier.
A+, Philippe
Bonjour,
Super, merci je vais regarder ça !
++
Hors ligne
Re,
Petit soucis !
L'attribut "accept" n'est pas pris en compte sous Firefox ?
Comment contourner ce soucis ?
<form action="input_file.htm" enctype="multipart/form-data"> <p> Choisissez un fichier texte (txt, html etc.) de votre ordinateur:<br> <input name="fichier" type="file" size="50" maxlength="100000" accept="text/*"> </p> </form>
D'avance merci
++
Hors ligne
Hum... en fouillant un peu sur Internet, il semble qu'il n'y ait pas de vraie solution HTML qui marche avec tous les browsers.
J'ai vu des solutions qui semblaient marcher, mais elles utilisent un loader en flash :
ex: YUI3 uploader
http://developer.yahoo.com/yui/3/uploader/
Bon, c'est pas génial, mais c'est le seul système que j'ai trouvé.
(note : j'avais utilisé l'uploader de YUI2 dans ma jeunesse, il marchait sans problème avec les filtres sur les extensions)
A+, Philippe
Hors ligne
Bonsoir philippe,
J'ai fais le même constat ! Que cette méthode était valable pour IE, Opera mais défaillante pour Firefox y compris pour la version 4.0 !
Je supose que c'est pour des raisons de sécurité. J'avais déjà eue ce soucis une fois pour le téléchargement de plusieurs fichiers (selection multiple), depuis un input de type file (possible sous IE, impossibe sous Firefox). C'est un peu dommage mais bon...!
Bonne soirée
++
Hors ligne