使用文件名保存文件Javascript
我正在用纯Javascript编写一个文本编辑器。我希望这样,当用户单击“保存”按钮时,编辑器下载文件。我已经让这个部分起作用了:使用文件名保存文件Javascript,javascript,Javascript,我正在用纯Javascript编写一个文本编辑器。我希望这样,当用户单击“保存”按钮时,编辑器下载文件。我已经让这个部分起作用了: uriContent = "data:application/octet-stream," + encodeURIComponent(codeMirror.getValue()); newWindow=window.open(uriContent, 'filename.txt'); 该文件将下载,但问题是该文件名为“下载” 问题:如何将文件名更改为我想要的任何名称
uriContent = "data:application/octet-stream," + encodeURIComponent(codeMirror.getValue());
newWindow=window.open(uriContent, 'filename.txt');
该文件将下载,但问题是该文件名为“下载”
问题:如何将文件名更改为我想要的任何名称,例如
filename.txt
?使用filename
属性,如下所示:
uriContent = "data:application/octet-stream;filename=filename.txt," +
encodeURIComponent(codeMirror.getValue());
newWindow=window.open(uriContent, 'filename.txt');
编辑:
显然,没有可靠的方法可以做到这一点。请参阅:将“保存”按钮替换为锚链接,并动态设置新的下载属性。适用于Chrome和Firefox:
var d = "ha";
$(this).attr("href", "data:image/png;base64,abcdefghijklmnop").attr("download", "file-" + d + ".png");
下面是一个将名称设置为当前日期的工作示例:
这里有一个download
属性的兼容性表:Hmm,我试过了,它仍然在下载一个名为“download”的文件。这就是我现在的代码:uriContent=“data:application/octet stream;filename=filename.txt,”+encodeURIComponent(codemirr.getValue());newWindow=window.open(uriContent,'filename.txt')代码>对于我在Firefox中所做的浏览器测试似乎不起作用;这是其他浏览器中的功能吗。嗯,好吧,不管怎样,谢谢你的回答!这不适用于Firefox。10.0.9@zzzzBov我认为这个答案比你链接到的答案要好,因为它实际上显示了所述问题的解决方案。@AdriánSalgado,这并不会使这个问题减少重复性,但那次接近投票发生在两年前。正如你所看到的,没有足够的支持来解决这个问题。如果你认为另一个问题应该有一个更好的答案,那么我建议添加一个。这似乎还不是一个好答案!我猜这只是javascript窗口对象中的一个小黑洞!我也有同样的担心:我的代码将动态打开包含报告的文件,但文件名不是我的代码定义的。我不应该要求用户点击a href并下载该文件。在Chrome 55.0.2883.87 m(64位)版本中似乎不起作用,尽管如此。我必须继续思考。下载属性浏览器支持如上所述,Safari&IE中没有下载属性支持。你救了我的命,兄弟。谢谢
function saveAs(uri, filename) {
var link = document.createElement('a');
if (typeof link.download === 'string') {
document.body.appendChild(link); // Firefox requires the link to be in the body
link.download = filename;
link.href = uri;
link.click();
document.body.removeChild(link); // remove the link when done
} else {
location.replace(uri);
}
}