如何使浏览器显示“另存为对话框”,以便用户可以将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:
- html5下载属性
- 数据uri的
find参考:
http://paxcel.net/blog/savedownload-file-using-html5-javascript-the-download-attribute-2/
编辑:正如你可以从评论收集这不起作用
- Internet Explorer(尽pipe在Edge v13中可用)
- 苹果浏览器
- iOS Safari
- Opera Mini
- Android浏览器(4.3及更低版本)
这是可能的使用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