使用文件名保存文件Javascript

ski*_*rk1 38 javascript

我正在使用纯Javascript编写文本编辑器.我希望这样当用户点击"保存"按钮时,编辑器会下载该文件.我已经部分工作了:

uriContent = "data:application/octet-stream," + encodeURIComponent(codeMirror.getValue());
newWindow=window.open(uriContent, 'filename.txt');
Run Code Online (Sandbox Code Playgroud)

该文件下载,但问题是该文件名为"download".

问题:如何将文件名更改为我想要的任何内容,例如filename.txt

Art*_*ens 27

用锚链接替换"保存"按钮并download动态设置新属性.适用于Chrome和Firefox:

var d = "ha";
$(this).attr("href", "data:image/png;base64,abcdefghijklmnop").attr("download", "file-" + d + ".png");
Run Code Online (Sandbox Code Playgroud)

这是一个名称设置为当前日期的工作示例:http://jsfiddle.net/Qjvb3/

这里是download属性的兼容性表:http://caniuse.com/download


小智 16

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);
    }
}
Run Code Online (Sandbox Code Playgroud)


Jam*_*ill 5

使用这样的filename属性:

uriContent = "data:application/octet-stream;filename=filename.txt," + 
              encodeURIComponent(codeMirror.getValue());
newWindow=window.open(uriContent, 'filename.txt');
Run Code Online (Sandbox Code Playgroud)

编辑:

显然,没有可靠的方法来做到这一点.请参阅:使用数据时是否有任何方法可以指定建议的文件名:URI?

  • 这不适用于Firefox.10.0.9 (4认同)
  • 似乎不适用于我在Firefox中进行的浏览器测试; 这是不同浏览器中的功能吗?[维基百科提到数据URL不能携带文件名](http://en.wikipedia.org/wiki/Data_URI_scheme#Disadvantages). (2认同)