Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/neo4j/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用文件名保存文件Javascript_Javascript - Fatal编程技术网

使用文件名保存文件Javascript

使用文件名保存文件Javascript,javascript,Javascript,我正在用纯Javascript编写一个文本编辑器。我希望这样,当用户单击“保存”按钮时,编辑器下载文件。我已经让这个部分起作用了: uriContent = "data:application/octet-stream," + encodeURIComponent(codeMirror.getValue()); newWindow=window.open(uriContent, 'filename.txt'); 该文件将下载,但问题是该文件名为“下载” 问题:如何将文件名更改为我想要的任何名称

我正在用纯Javascript编写一个文本编辑器。我希望这样,当用户单击“保存”按钮时,编辑器下载文件。我已经让这个部分起作用了:

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);
    }
}