如何使浏览器显示“另存为对话框”,以便用户可以将string的内容保存到他的系统上的文件?

如何让浏览器显示“保存为对话框”,以便用户可以将string的内容保存到他的系统中的文件?

例如:

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

导致这样的事情:

例

如果有人还在想…

我是这样做的:

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

不记得我的来源,但它使用以下技术\function:

  1. html5下载属性
  2. 数据uri的

find参考:

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


编辑:正如你可以从评论收集这不起作用

  1. Internet Explorer(尽pipe在Edge v13中可用)
  2. 苹果浏览器
  3. iOS Safari
  4. Opera Mini
  5. Android浏览器(4.3及更低版本)

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

这是可能的使用HTML5 saveAs函数的这个跨浏览器JavaScript实现: https : //github.com/koffsyrup/FileSaver.js

如果你想要做的只是保存文本,那么上面的脚本在所有的浏览器(包括IE的所有版本)中都可以使用,除了JS之外什么也不使用。

有一个JavaScript库,为此,请参阅Github上的FileSaver.js

然而, saveAs()函数不会将纯string发送到浏览器,您需要将其转换为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; } 

然后在blob上调用saveAs ,如下所示:

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

当然,记得在你的网页上使用<script src=FileSaver.js>包含上面提到的JavaScript库

使用execComand:

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

在下一个链接: execCommand