如何在FrontEnd中指定下载文件名

时间:2018-07-05 21:02:25

标签: javascript

更新:

Creating a Blob from a base64 string in JavaScript

我正在尝试实现单击按钮并从其DataURL下载文件。

当前,由于Chrome浏览器已限制了诸如建立<a>链接之类的旧方法,因此会引发如下错误:

  

不允许将顶部框架导航到数据URL:...。

我找到的解决方案是使用iframe打开新窗口并将DataURL设置为其src

let jpgWindow = window.open("", "_blank")
var html = "<html><body><iframe width='100%' height='100%' src='data:application/jpeg;base64, "+ theDataURL+"'></iframe></body></html>";
jpgWindow.document.write(html)

当我单击按钮时,下载成功,但是图片的下载文件名为“ download”,我无法指定我希望默认使用的文件名。

有什么想法吗?

1 个答案:

答案 0 :(得分:2)

查看window.URL.createObjectURL https://developer.mozilla.org/en-US/docs/Web/API/URL/createObjectURL

const blob = new Blob(['array of data in your file'], {type : 'text/rtf'});
const anchor = document.createElement('a');

anchor.href = window.URL.createObjectURL(blob);
anchor.download = 'the-file-name.txt';
anchor.click();