保存文件与文件名的Javascript

我正在使用纯Javascript编写文本编辑器。 我喜欢这样,当用户点击“保存”button时,编辑器会下载文件。 我已经有这个部分工作:

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

文件下载,但问题是该文件被命名为“下载”。

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

用锚点链接replace您的“保存”button,并dynamic设置新的download属性。 适用于Chrome和Firefox:

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

下面是一个工作示例,其名称设置为当前date: http : //jsfiddle.net/Qjvb3/

这里有一个download属性的兼容表: http : //caniuse.com/download

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

使用filename属性,如下所示:

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

编辑:

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