如何让浏览器显示“另存为对话框”,以便用户可以将字符串的内容保存到其系统上的文件中?
例如:
var myString = "my string with some stuff";
save_to_filesystem(myString,"myString.txt");
结果是这样的:
如何让浏览器显示“另存为对话框”,以便用户可以将字符串的内容保存到其系统上的文件中?
例如:
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>
不记得我的来源,但它使用以下技术\功能:
找到参考:
http://paxcel.net/blog/savedownload-file-using-html5-javascript-the-download-attribute-2/
编辑:你可以从收集的意见,但这不工作,
有一个 javascript 库,请参阅Github 上的 FileSaver.js
但是该saveAs()
函数不会将纯字符串发送到浏览器,您需要将其转换为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;
}
然后调用saveAs
blob,如下所示:
var myString = "my string with some stuff";
saveAs( data2blob(myString), "myString.txt" );
当然记得在你的网页上使用上面提到的 javascript 库 <script src=FileSaver.js>
有一个名为Native File System API的新规范,它允许您像这样正确地执行此操作:
const result = await window.chooseFileSystemEntries({ type: "save-file" });
有一个演示在这里,但我相信,除非您注册或启用一个配置参数,它显然是利用原点审讯所以它可能不会在自己的网站工作,只在Chrome工作。如果你正在制作一个 Electron 应用程序,这可能是一个选择。
这可以使用 HTML5saveAs
功能的跨浏览器 javascript 实现:https : //github.com/koffsyrup/FileSaver.js
如果您只想保存文本,那么上述脚本适用于所有浏览器(包括所有版本的 IE),只使用 JS。
仅使用 javascript 的解决方案
function saveFile(fileName,urlFile){
let a = document.createElement("a");
a.style = "display: none";
document.body.appendChild(a);
a.href = urlFile;
a.download = fileName;
a.click();
window.URL.revokeObjectURL(url);
a.remove();
}
let textData = `El contenido del archivo
que sera descargado`;
let blobData = new Blob([textData], {type: "text/plain"});
let url = window.URL.createObjectURL(blobData);
//let url = "pathExample/localFile.png"; // LocalFileDownload
saveFile('archivo.txt',url);