Javascript 如何使浏览器显示一个";“另存为对话框”;那么用户可以将字符串的内容保存到系统上的文件中?
如何使浏览器显示“另存为对话框”,以便用户可以将字符串内容保存到其系统上的文件中 例如:Javascript 如何使浏览器显示一个";“另存为对话框”;那么用户可以将字符串的内容保存到系统上的文件中?,javascript,save,savefiledialog,Javascript,Save,Savefiledialog,如何使浏览器显示“另存为对话框”,以便用户可以将字符串内容保存到其系统上的文件中 例如: var myString = "my string with some stuff"; save_to_filesystem(myString,"myString.txt"); 结果是这样的: 万一有人还在想 我是这样做的: 不记得我的来源,但它使用以下技术/功能: html5下载属性 数据uri的 找到引用: 编辑: 正如您可以从评论中收集到的,这不适用于 Internet Explorer(可在
var myString = "my string with some stuff";
save_to_filesystem(myString,"myString.txt");
结果是这样的:
万一有人还在想 我是这样做的:
不记得我的来源,但它使用以下技术/功能:
编辑: 正如您可以从评论中收集到的,这不适用于
万一有人还在想 我是这样做的:
不记得我的来源,但它使用以下技术/功能:
编辑: 正如您可以从评论中收集到的,这不适用于
<input type="button" name="save" value="Save" onclick="javascript:document.execCommand('SaveAs','true','your_file.txt')">
在下一个链接中:
使用execComand:
<input type="button" name="save" value="Save" onclick="javascript:document.execCommand('SaveAs','true','your_file.txt')">
在下一个链接中:
有一个javascript库用于此,请参阅 但是
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;
}
当然,请记住使用
在您的网页上包含上述javascript库。有一个javascript库用于此,请参阅
但是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;
}
当然,请记住,使用HTML5
saveAs
功能的跨浏览器javascript实现,可以在网页上包含上述javascript库:
如果您只想保存文本,则上述脚本可以在所有浏览器(包括IE的所有版本)中工作,只需使用JS。这可以使用HTML5
saveAs
功能的跨浏览器javascript实现:
如果您只想保存文本,则上述脚本可在所有浏览器(包括IE的所有版本)中运行,只需使用JS。有一个名为的新规范,允许您正确执行此操作,如:
有一个演示,但我相信它使用的是origin试用版,所以除非您注册或启用配置标志,否则它可能无法在您自己的网站上运行,这是显而易见的。如果您正在制作电子应用程序,这可能是一个选项。有一个名为的新规范,允许您正确地执行此操作,如:
有一个演示,但我相信它使用的是origin试用版,所以除非您注册或启用配置标志,否则它可能无法在您自己的网站上运行,这是显而易见的。如果您正在制作一个电子应用程序,这可能是一个选项。仅使用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);
仅使用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);
您可以在这里找到答案:@ArnarYngvason这与在angularjs中执行此操作的过程相同吗?@bleykFaust,所有前端js应用程序的过程都相同。您可以在这里找到答案:@ArnarYngvason这与在angularjs中执行此操作的过程相同吗?@bleykFaust,所有前端js应用程序的过程都是一样的。这只是将“myString.txt”保存到我的下载文件夹中,没有显示对话框。啊,不,我没有!它们都自动保存。那么,这始终是每浏览器功能,还是有一种方法可以通过脚本触发行为?我相信这是每浏览器功能。在chrome中,您可以在“设置”、“高级设置”复选框“下载前询问保存每个文件的位置”中进行设置。在正常情况下,无法获取Win32 SaveAs对话框。最好的方法是使用用户输入的文件名。这只是将“myString.txt”保存到我的下载文件夹中,而不显示对话框。啊,不,我没有!它们都自动保存。那么,这始终是每浏览器功能,还是有一种方法可以通过脚本触发行为?我相信这是每浏览器功能。在chrome中,您可以在“设置”、“高级设置”复选框“下载前询问保存每个文件的位置”中进行设置。在正常情况下,无法获取Win32 SaveAs对话框。最好的方法是使用用户输入的文件名。从2019年1月起,它可以在(非iOS)Android浏览器Safari中使用。仍然没有iOS Safari、Opera Mini或IE@SeanKPS。尽管有浏览器设置,但您可以强制它提示用户输入保存它的文件夹吗?嗯,它很现代,很短,而且很有效。但是,它不再提供“另存为…”对话框。我希望用户能够在保存之前更改文件名。在win7 chrome 79中,依赖于浏览器设置。如果用户未选中“下载前询问每个文件的保存位置”,它将直接下载。现在最好的方法(2021年5月)似乎是此处详述的文件系统访问API:自2019年1月起,它在Android浏览器(非iOS)Safari中工作。仍然没有iOS Safari、Opera Mini或IE@SeanKPS。尽管有浏览器设置,但您可以强制它提示用户输入保存它的文件夹吗?嗯,它很现代,很短,而且很有效。但是,它不再提供“另存为…”对话框。我希望用户能够在保存之前更改文件名。在win7 chrome 79中,依赖于浏览器设置。如果用户未选中“下载前询问每个文件的保存位置”,它将直接下载。现在最好的方法(2021年5月)似乎是此处详述的文件系统访问API:在2021年5月解决此问题,这似乎是最简单的方法:。请注意,自最初发布后,API已发生更改。请参阅这篇有用的文章:2021年5月,这似乎是最简单的方法:。请注意,自最初发布后,API已发生更改。请参阅这篇有用的文章: