2012-11-15 5 views
3

Je veux exporter les données existantes dans le fichier csv. J'essaie d'utiliser ce code:comment exporter le fichier csv avec le nom de fichier

var uriContent = "data:text/csv;charset=utf-8," + encodeURIComponent(data); 
var myWindow = window.open(uriContent); 
myWindow.focus(); 

cela fonctionne mais je peux concevoir le nom de fichier. Je peux seulement obtenir le dialogue avec le nom comme "MVeAnkW8.csv.part" que je ne sais pas d'où le nom vient.

Comment puis-je attribuer un nom de fichier dans la première boîte de dialogue? Merci d'avance.

mise à jour:

Je suis maintenant en utilisant des rails. En fait, j'ai une méthode dans les noms côté serveur export_to_csv. À la fin de cette méthode, j'utilise un code comme celui-ci:

send_data(csv_string, 
    :type => 'text/csv; charset=utf-8;', 
    :filename => "myfile.csv") 

Cela fonctionne et je peux spécifier le nom du fichier. Pour l'instant, je veux utiliser ajax pour obtenir plus de fichiers csv (c'est la raison pour laquelle je veux utiliser javascript, car une requête http normale ne peut obtenir qu'un fichier à télécharger).

J'utilise le code js comme ça:

$.post("export_to_csv", 
function(data) { 
var uriContent = "data:text/csv;charset=utf-8," + encodeURIComponent(data); 
    var myWindow = window.open(uriContent); 
    myWindow.focus();});  

Obtenir les données du côté serveur et j'essaie de le transférer dans csv. Je peux obtenir un fichier, mais je ne peux pas spécifier le nom du fichier.

Répondre

4

Comme je sais, vous pouvez spécifier le nom de fichier uniquement dans Chrome 14+. Jetez un oeil à cette question: Is there any way to specify a suggested filename when using data: URI?

Mettre à jour! Si vous souhaitez télécharger plusieurs fichiers CSV "à la fois", vous pouvez les compresser ensemble, ou enregistrer chaque fichier séparément sur le serveur (chaque fichier a maintenant une URL qui pointe vers lui - si vous les placez dans le ' www 'dossier). Ensuite, envoyez les noms de fichiers et leur chemin/URL au client via ajax (utilisez une liste codée json par exemple). Dans la fonction de rappel ajax: prenez la liste des fichiers et ouvrez chaque fichier-url dans une fenêtre séparée.

Questions connexes