J'ai une exigence comme suit: p>
Il y a un lien sur une page Web. Comme l'utilisateur clique sur le lien, il doit créer un fichier à la volée et une boîte de téléchargement apparaît. Comment le faire en utilisant Java Script? P>
5 Réponses :
Vous pouvez créer une URI de données. La plupart des navigateurs modernes devraient pouvoir le comprendre. Voir http://fr.wikipedia.org/wiki/data_uri_scheme p>
Si l'utilisateur vous fait confiance, vous pouvez créer un fichier XML directement dans son système de fichiers.
Exemple de code pour Mozilla Firefox: Si vous avez besoin de prise en charge de tous les navigateurs, reportez-vous à la manière dont il est implémenté dans http://www.tiddlyswiki.com p> EDIT: B> Cela ne fonctionne pas pour Firefox 17 + B> car changeant privilèges a été jugé dangereux et enlevé. Voir ici pour plus de détails: https://bugzilla.mozilla.org/show_bug.cgi ? id = 546848 # C57 P> p>
Après avoir essayé ce qu'Andreas a dit que j'ajouterai quelque chose:
script: p> Vous avez un lien comme ceci, note Le nouveau téléchargement Atribute , avec vous, vous mettez le nom de fichier. P> < Pré> xxx pré> Il fonctionne au moins au chrome 27 et Firefox 21. P> amélioré sont les bienvenus: -) P> P>
C'est une bonne réponse, des félicitations. Il n'est également pas basé sur des JS non standard comme la réponse acceptée. +1.
Vous pouvez utiliser des blobs comme indiqué dans Cet exemple . < P> Vous pouvez avoir une fonction JavaScript avec le code suivant: p>
C'est bien! Vous pouvez même définir le nom de fichier et le type de fichier (type MIME).
C'est la meilleure réponse de toutes les autres réponses sur ce post. Merci! :)
Cela ne fonctionne pas dans Mac Firefox et ouvre l'onglet avec du contenu au lieu de télécharger dans Mac Safari
Essayez de changer de "texte / plaine" pour l'application / l'octet-flux
Pourquoi déclarez-vous pom code> deux fois?
decodeRequest(textToDecode) {
var decodedString = atob(textToDecode);
var fileName = "fileName1"+'_RQ';
var fileType = '.xml';
var blob = new Blob([decodedString], { type: fileType });
var a = document.createElement('a');
a.download = fileName;
a.href = URL.createObjectURL(blob);
a.dataset.downloadurl = [fileType, a.download, a.href].join(':');
a.style.display = "none";
document.body.appendChild(a);
a.click();
document.body.removeChild(a);
setTimeout(function() { URL.revokeObjectURL(a.href); }, 1500);
}
Bien que ce code puisse résoudre la question, , y compris une explication de la manière et pourquoi cela résout le problème aiderait vraiment à améliorer la qualité de votre post et aboutit probablement à des votes supplémentaires. N'oubliez pas que vous répondez à la question pour les lecteurs à l'avenir, pas seulement la personne qui demande maintenant. S'il vous plaît Modifier Votre réponse Pour ajouter des explications et donner une indication de quelles limitations et hypothèses s'appliquent.
Si le fichier existe déjà, créez simplement un lien vers l'URL du fichier. Si ce n'est pas le cas, je suis sûr que vous devez utiliser du code côté serveur pour le faire.
La création de la chaîne XML est la partie facile. Rendre quelque chose de synthétisé dans le navigateur devient un fichier "téléchargeable" est difficile, sinon impossible à faire de telle sorte qu'il fonctionne dans tous les navigateurs (raisonnables).