Comment puis-je faire en sorte qu'un navigateur affiche un "enregistrer en tant que boîte de dialogue" afin que l'utilisateur puisse enregistrer le contenu d'une chaîne dans un fichier de son système?
Par exemple:
var myString = "my string with some stuff";
save_to_filesystem(myString,"myString.txt");
Il en résulte quelque chose comme ceci:
Au cas où quelqu'un se demanderait encore ...
Je l'ai fait comme ça:
<a href="data:application/xml;charset=utf-8,your code here" download="filename.html">Save</a>
je ne me souviens pas de ma source, mais il utilise les techniques suivantes:
Trouvé la référence:
http://paxcel.net/blog/savedownload-file-using-html5-javascript-the-download-attribute-2/
EDIT: Comme vous pouvez le constater à partir des commentaires, cela ne fonctionne pas [~ # ~] [~ # ~]
Il existe une bibliothèque javascript pour cela, voir FileSaver.js sur Github
Cependant, la fonction saveAs()
n'enverra pas de chaîne pure au navigateur, vous devez le convertir en blob
:
function data2blob(data, isBase64) {
var chars = "";
if (isBase64)
chars = atob(data);
else
chars = data;
var bytes = new Array(chars.length);
for (var i = 0; i < chars.length; i++) {
bytes[i] = chars.charCodeAt(i);
}
var blob = new Blob([new Uint8Array(bytes)]);
return blob;
}
puis appelez saveAs
sur le blob, comme suit:
var myString = "my string with some stuff";
saveAs( data2blob(myString), "myString.txt" );
Bien entendu, n'oubliez pas d'inclure la bibliothèque javascript mentionnée ci-dessus sur votre page Web à l'aide de <script src=FileSaver.js>
Ceci est possible en utilisant cette implémentation javascript sur plusieurs navigateurs de la fonction HTML5 saveAs
: https://github.com/koffsyrup/FileSaver.js
Si tout ce que vous voulez, c'est sauvegarder du texte, le script ci-dessus fonctionne dans tous les navigateurs (y compris toutes les versions de IE), en n'utilisant que JS.