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

JavaScript Discussion :

Changer le nom d'un fichier au téléchargement


Sujet :

JavaScript

  1. #1
    Membre à l'essai
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Mars 2015
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Mars 2015
    Messages : 23
    Points : 12
    Points
    12
    Par défaut Changer le nom d'un fichier au téléchargement
    Bonjour à tous,

    J'ai créé une fonction permettant de sortir un fichier CSV à partir d'un json.
    Ce fichier peut se télécharger en cliquant sur un bouton.

    J'aimerais pouvoir changer le nom de ce fichier lors du clic sur le bouton (pour l'instant il s'appelle "téléchargement" par défaut).
    Mon plus gros souci est que l'extension n'est pas affichée (je voudrais en effet avoir au moins le .csv).

    Voici mon code :
    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
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
     
    function JSON2CSV() {
     
      var myjson = "http://*****/get_json_test.php?callback=?";
     
      $('.filter').each(function(i, obj){
         var input = $(obj).find("input")[0];
         myjson += '&'+input.name+'=' + input.value;
      });
     
      $('.display').each(function(i,obj){
         myjson += '&'+$(obj).attr('table')+'|'+$(obj).attr('titre')+'';
      });
     
      $.getJSON(myjson, function(data){
         var line = '';
         var str = '';
            if(data.length != 0){
               $.each(data[0], function(index, valeur){ //Pour chaque colonne
                  var line = '';
                  var value = index;
                  line += value + ';';
                  str += line; //+ '\r\n';
               });
               str = str.slice(0, -1);
               str += '\n';
     
               $.each(data, function(i,ti){
                  $.each(ti, function(index, valeur){
                     var line = '';
                     var valeur = valeur;
                     line += valeur + ';';
                     str += line; // + '\r\n';
                  });
               str = str.slice(0, -1);
               str += '\n';
               }); //End each
            window.open("data:application/str;charset=utf-8;" + encodeURIComponent(str));
            } //End if
      }); //End getJSON
    } //End JSON2CSV
    Sauriez vous ce que je dois changer dans la ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     window.open("data:application/str;charset=utf-8;" + encodeURIComponent(str));
    afin d'avoir un nom comme "Requête.csv" ?

    Merci de votre aide,
    Corentin.

  2. #2
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 640
    Points : 66 669
    Points
    66 669
    Billets dans le blog
    1
    Par défaut
    la reponse ne se trouve pas coté javascript ...
    mais plutot au niveau de ton force download php ...
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  3. #3
    Membre à l'essai
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Mars 2015
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Mars 2015
    Messages : 23
    Points : 12
    Points
    12
    Par défaut
    Ca signifie que je dois effectuer la modification au niveau de mon fichier php ?
    Existe-t-il une solution en javascript afin de ne pas toucher à ce fichier ?
    Merci pour ton aide.

  4. #4
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 640
    Points : 66 669
    Points
    66 669
    Billets dans le blog
    1
    Par défaut
    non clairement c'est totalement hors de portée de javascript
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  5. #5
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 557
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 557
    Points : 21 616
    Points
    21 616
    Par défaut
    Bah, quand même, il y a moyen de créer un simple lien invisible <a href="data:text/plain,Hello%20World!" download="salutation.txt"> et de déclencher un clic dessus par JavaScript.

    Après ça marche vraiment bien que sur les navigateurs qui gèrent l'attribut download, quoi.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  6. #6
    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
    Citation Envoyé par CocoFlouq Voir le message
    Ca signifie que je dois effectuer la modification au niveau de mon fichier php ?
    Existe-t-il une solution en javascript afin de ne pas toucher à ce fichier ?
    Merci pour ton aide.
    J'avoue que je ne comprends pas l'intérêt de tout ce truc.
    tu construis un json que tu envois à un php qui en fait un csv
    qui t'est retourné dans un flux
    que tu lis pour le transformer (là je ne vois vraiment pas pourquoi) en CSV (alors que le php l'a déjà transformé.
    que tu place ensuite dans un lien dat: pour le télécharger.

    Perso je construit mon json que j'envois à mon php via un form caché en post
    le php le formate et csv et le retourne en attachement (download)
    c'est fini.

    quant à l'argument je ne veux pas toucher au serveur
    je ne le comprends pas plus
    de toute façon ton js est installé sur le serveur donc tu touche au serveur.

    A+JYT

  7. #7
    Expert éminent sénior

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 389
    Points : 10 422
    Points
    10 422
    Par défaut
    C'est tellement plus simple au niveau du force download de php qu'on voit pas pourquoi tu te prends la tête côté javascript. D'autant plus que modifier le nom du fichier en javascript pourrait poser des problèmes de sécurité.

  8. #8
    Membre actif

    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2013
    Messages
    119
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Février 2013
    Messages : 119
    Points : 203
    Points
    203
    Billets dans le blog
    1
    Par défaut
    je te donne un exemple vite fait pour faire ca en javascript tu peu l adapter facilement
    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
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
     
    <html><head>
      <meta http-equiv="content-type" content="text/html; charset=UTF-8">
      <title> exporter csv </title>
    <script type="text/javascript"> 
     function jsonTblCsv(tbl) {
    	 tbl=tbl||[];
    	var ret = '';
    	for (var i = 0; i < tbl.length; i++) {
    		var ligne = '';
    		for (var index in tbl[i]) {
    			if (ligne != '') line += ','
    			ligne += "\""+tbl[i][index]+"\"";
    		}
    		ret += ligne + '\r\n';
    	}
    	return ret;
    }
     
     
     
    function exportCSV(csv,nomFichier)
    {
    	var uri = 'data:text/csv;charset=utf-8,' + escape(csv);
    	var downloadLink = document.createElement("a");
    	if("download" in downloadLink){
    		downloadLink.href = uri;
    		downloadLink.download = nomFichier + ".csv";
    		document.body.appendChild(downloadLink);
    		downloadLink.click();
    		document.body.removeChild(downloadLink);
    	}else{
    		if (/MSIE/gi.test(navigator.userAgent)) {
    			var obj = window.open();
    			obj.document.write('sep=,\r\n' + csv);
    			obj.document.close();
    			obj.document.execCommand('SaveAs', true, nomFichier + ".csv");
    			obj.close();
    		}
     
    	}
    }
     
    function testExportCsv(){
    	var nomFicher=prompt("entrer nom de ficher","test");
    	var testJson=[
    		{nom:"le nom"},
    		{nom:"le prenom"},
    		{nom:"le nom1"},
    		{nom:"le prenom1"} 
    	];
    	var testCsv=jsonTblCsv(testJson);
    	exportCSV(testCsv,nomFicher);
    }
     
    </script>
     
     
    </head>
    <body>
     
    <button onclick="testExportCsv()" >tester export CSV</button>
    </body>
    </html>

Discussions similaires

  1. changer le nom d'un fichier lors de son upload
    Par thaundeadboss dans le forum Langage
    Réponses: 2
    Dernier message: 24/11/2009, 10h41
  2. Réponses: 2
    Dernier message: 15/10/2009, 14h30
  3. Changer le nom d'un fichier
    Par Raikko68 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 03/10/2008, 03h12
  4. Réponses: 3
    Dernier message: 14/02/2007, 10h37
  5. [Fichier] changer le nom d'un fichier
    Par karibouxe dans le forum Langage
    Réponses: 2
    Dernier message: 26/03/2006, 21h10

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