Javascript: Télécharger des fichiers de données de contenu à l'intérieur de la page
réglage est le suivant:
J'ai une page d'accueil où je l'affichage d'un diagramme qui a été construit à l'aide de séparation par virgule valeurs à partir de l'intérieur de la page. J'aimerais donner aux utilisateurs la possibilité de télécharger les données cvs-fichier sans avoir à contacter le serveur de nouveau. (comme les données sont déjà là)
Est-ce possible en quelque sorte? Je préfère un pur JavaScript solution.
Jusqu'à présent, j'ai découvert: http://pixelgraphics.us/downloadify/test.html, mais il implique flash que je voudrais éviter.
Je ne peux pas imaginer cette question n'a pas été demandé avant. Je suis désolé pour le double post, mais il semble que j'ai utilisé les mauvais mots-clés ou de quelque chose - je n'ai pas trouvé de solution dans ces forums.
Vous devez vous connecter pour publier un commentaire.
Mise à jour:
Certainement change les choses 😉 Quand j'ai répondu à cette question IE8 a été le dernier navigateur IE disponibles (Nov 2010) et il n'y a donc pas de croix-navigateur de façon à atteindre cet objectif sans un aller-retour vers le serveur, ou à l'aide d'un outil nécessitant Flash.
@Zectburno réponse vous obtiendrez ce dont vous avez besoin maintenant, mais pour le contexte historique, être conscient de qui IE navigateurs prennent en charge la fonctionnalité.
Veillez à tester dans les navigateurs vous avez besoin de soutien. Même si la Goutte exemple dans l'autre réponse doit travailler dans IE10+, il ne fonctionne pas pour moi tout simplement en cliquant sur le lien (le navigateur ne fait rien, pas d'erreur)... seulement si je clic droit et enregistrer la cible sous "fichier.csv", puis naviguez jusqu'au fichier et double-cliquez dessus puis-je ouvrir le fichier.
Tester les deux approches (btoa/Blob) dans ce JSFiddle.
(voici le code)
Réponse Originale À Cette Question:
Je ne pense pas qu'il y est une option disponible pour cela.
Je voudrais juste ajuster votre code tel que si Flash 10+ est détecté (93% de la saturation en septembre 2009) sur le système de l'utilisateur, de fournir la Downloadify option, sinon repli à un serveur-côté de la demande.
Testé sur Safari 5, Firefox 6, Opera 12, Chrome 26.
HTML5
Solution Simple :
Utilisation
'application/octet-stream'
a été la clé pour moi :+1:Autant que je sache, ce n'est pas possible: C'est pourquoi Downloadify a été créé.
Vous pouvez essayer de la relier à un
données:URL
contenant des données au format CSV, mais il y aura de la croix-navigateur de la difficulté.J'ai trouvé ce code ailleurs, ici, précédemment
Si vos utilisateurs ont mis à jour des navigateurs, le nouvel objet Blob pourrait vous aider.
S'appuyant sur l'exemple ici https://developer.mozilla.org/en/docs/DOM/Blob ("Blob constructeur exemple d'utilisation"), vous pourriez faire quelque chose comme ce qui suit:
La solution la plus complète, j'ai couru à travers qui est à l'aide de FileSaver.js, la gestion de nombreux potentiels de la croix-problèmes de navigateur pour vous avec des issues.
Il faut profiter de la
Blob
objet comme les autres affiches ont fait, et que le créateur crée même un Blob.js polyfill dans le cas où vous avez besoin de soutien versions de navigateurs qui ne supportent pasBlob
HTML:
JavaScript:
Prises de Comment faire pour Télécharger des Données d'un Fichier à Partir de JavaScript