Comment faire apparaître un navigateur comme "enregistrer comme boîte de dialogue" afin que l'utilisateur puisse enregistrer le contenu d'une chaîne dans un fichier sur son système?

Comment puis-je faire apparaître un navigateur comme "enregistrer comme boîte de dialogue" afin que l'utilisateur puisse enregistrer le contenu d'une chaîne dans un fichier sur son système?

Par exemple:

var myString = "my string with some stuff"; save_to_filesystem(myString,"myString.txt"); 

Résultat dans quelque chose comme ceci:

Exemple

Dans le cas où quelqu'un se pose toujours …

Je l'ai fait comme ça:

<a href="data:application/xml;charset=utf-8,your code here" download="filename.html">Save</a>

Je ne peux pas me souvenir de ma source, mais il utilise les techniques \ features suivantes:

  1. Attribut de téléchargement html5
  2. Data uri's

Trouvé la référence:

http://paxcel.net/blog/savedownload-file-using-html5-javascript-the-download-attribute-2/


EDIT: Comme vous pouvez le consulter à partir des commentaires, cela ne fonctionne PAS

  1. Internet Explorer (fonctionne dans Edge v13 cependant)
  2. Safari
  3. IOS Safari
  4. Opera Mini
  5. Navigateur Android (4.3 et inférieur)

http://caniuse.com/#feat=download

Ceci est possible en utilisant cette implémentation javascript du navigateur croisé de la fonction saveAs HTML5: https://github.com/koffsyrup/FileSaver.js

Si tout ce que vous voulez faire est d'enregistrer du texte, alors le script ci-dessus fonctionne dans tous les navigateurs (y compris toutes les versions d'IE), en utilisant simplement JS.

Il existe une bibliothèque javascript pour cela, voir FileSaver.js sur Github

Cependant, la fonction saveAs() n'envoie pas de chaîne pure au navigateur, vous devez la 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; } 

Et puis appeler saveAs sur le blob, comme comme saveAs :

 var myString = "my string with some stuff"; saveAs( data2blob(myString), "myString.txt" ); 

Bien sûr, n'oubliez pas d'inclure la bibliothèque de javascript mentionnée ci-dessus sur votre page Web en utilisant <script src=FileSaver.js>

Utilisation de execComand:

 <input type="button" name="save" value="Save" onclick="javascript:document.execCommand('SaveAs','true','your_file.txt')"> 

Dans le lien suivant: execCommand