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

Ext JS / Sencha Discussion :

[ExtJS4.2.1] Sauvegarder des données dans un fichier ?


Sujet :

Ext JS / Sencha

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    624
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Mars 2005
    Messages : 624
    Points : 199
    Points
    199
    Par défaut [ExtJS4.2.1] Sauvegarder des données dans un fichier ?
    Bonjour à tous,

    J'ai des données au format CSV récupérées depuis une requête AJAX que je voudrais sauvegarder dans un fichier sur le HDD client, je ne trouve pas comment faire ?

    Quelqu'un aurait-il une idée ?
    j'ai trouvé des infos comme quoi il serait préférable de passer par une Form invisible mais hélas le contenu est affiché au lieu de me proposer le prompt de sauvegarde du navigateur.

    Voici l'exemple avec la form invisible mais hélas le prompt n'apparaît pas et m'affiche la page CSV
    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
            var hiddenForm = Ext.create('Ext.form.Panel', {
                title           : 'hiddenForm',
                standardSubmit  : true,
                url             : 'data/export/data.php',
                timeout         : 120000,
                height          : 0,
                width           : 0,
                hidden          : true /*,
                items           : [
                                    {xtype:'hiddenField', name:'field1', value:'field1Value'}
                                    // additional fields
                ]*/
     
            });
     
            hiddenForm.getForm().submit();

    Et voici le code via une requête AJAX
    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
            Ext.Ajax.request({
                url: 'data/export/data.php',
                params: {
                    query   : PatentPulse.CurrentQuery,
                    facet   : $wtFacet,
                    fq      : PatentPulse.CurrentFacet,
                    fl      : 'pn,pd,tien',
                    rows    : 2000,
                    start   : 0,
                    format  : 'csv'
                },
                success: function (data, aAction) {
                    // Opérations en cas de succès de la requête
                    console.log('success');
                    console.log(data);  <===== QUE METTRE ICI POUR SAUVEGARDER "DATA" DANS UN FICHIER
                },
                failure: function (data, aAction) {
                    // Opérations en cas d'échec de la requête
                    console.log('failure!');
                }
            });
    D'avance merci pour vos réponses,

    Amicalement,
    Bruno

  2. #2
    Membre habitué
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    624
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Mars 2005
    Messages : 624
    Points : 199
    Points
    199
    Par défaut
    alors voici la solution pour la méthode Form invisible !

    Il faut ajouter avant de faire le echo final:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    $myCurl = curl_init($url);
    curl_setopt($myCurl, CURLOPT_FOLLOWLOCATION, 1);
    curl_setopt($myCurl, CURLOPT_RETURNTRANSFER, 1);
    $content = curl_exec($myCurl);
    curl_close($myCurl);
     
    header('Content-Type: application/vnd.ms-excel');
    header('Content-Disposition: attachment;filename='.$filename);
    header('Cache-Control: max-age=0');
     
    echo $content;

  3. #3
    Expert éminent
    Avatar de sekaijin
    Homme Profil pro
    Urbaniste
    Inscrit en
    Juillet 2004
    Messages
    4 205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Urbaniste
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2004
    Messages : 4 205
    Points : 9 127
    Points
    9 127
    Par défaut
    tu peux aussi jouer avec les data urls

    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    <a href="data:application/vnd.ms-excel;…9kaXY+Cgk8L2JvZHk+PC9odG1sPg==" download="Report.xls">click to download</a>

    A+JYT

  4. #4
    Membre habitué
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    624
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Mars 2005
    Messages : 624
    Points : 199
    Points
    199
    Par défaut
    Salut,

    heu là j'avoue que je ne comprends pas trop ce que tu m'expliques mais bon j'ai pas encore cherché ce que sont les data urls

  5. #5
    Expert éminent
    Avatar de sekaijin
    Homme Profil pro
    Urbaniste
    Inscrit en
    Juillet 2004
    Messages
    4 205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Urbaniste
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2004
    Messages : 4 205
    Points : 9 127
    Points
    9 127
    Par défaut
    http://tools.ietf.org/html/rfc2397

    les data url sont des url dont le scheme est data:
    le reste de l'url constitue le contenu de la réponse avec des couple attributs valeurs pour les headers suivi du contenu
    data:text/plain;charset=iso-8859-1;Bonjour%20le%20Monde.

    si ton navigateur invoque cette url il va recevoir en retour Bonjour le Monde avec le mime type text dans le charset latin-1

    ça reste purement local au navigateur
    mais ça reste limité par la taille max d'une url dans le navigateur
    ainsi IE9 est donnée pour 2083 (2ko) chrome supporte plus de 11600

    A+JYT

  6. #6
    Membre habitué
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    624
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Mars 2005
    Messages : 624
    Points : 199
    Points
    199
    Par défaut
    Ok merci pour ce complément d'information !

    Mise à part ça, cela ne me convient pas car j'ai parfois de gros volumes à sauvegarder

    Amitiés,
    Bruno

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

Discussions similaires

  1. Sauvegarder des données dans un fichier
    Par gillou026 dans le forum Débuter
    Réponses: 2
    Dernier message: 21/05/2013, 11h14
  2. Sauvegarder des données dans un fichier embarqué?
    Par takinelinfo dans le forum C#
    Réponses: 3
    Dernier message: 16/08/2012, 00h40
  3. Sauvegarder des données dans un fichier depuis une Base de Données
    Par ankou2005 dans le forum Contribuez / Téléchargez Sources et Outils
    Réponses: 0
    Dernier message: 14/02/2011, 18h51
  4. sauvegarde des données dans un fichier
    Par ammoun482 dans le forum VB.NET
    Réponses: 2
    Dernier message: 26/05/2010, 11h36
  5. Réponses: 8
    Dernier message: 30/01/2009, 14h02

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