通过 window.location
强制下载时,如何在 JavaScript 中设置 blob 文件的名称?
function newFile(data) {
var json = JSON.stringify(data);
var blob = new Blob([json], {type: "octet/stream"});
var url = window.URL.createObjectURL(blob);
window.location.assign(url);
}
运行上面的代码会立即下载一个文件,而无需刷新页面,如下所示:
bfefe410-8d9c-4883-86c5-d76c50a24a1d
我想将文件名设置为 my-download.json 。
原文由 Ash Blue 发布,翻译遵循 CC BY-SA 4.0 许可协议
我知道的唯一方法是 FileSaver.js 使用的技巧:
创建一个隐藏的
<a>
标签。将其
href
属性设置为 blob 的 URL。将其
download
属性设置为文件名。单击
<a>
标记。这是一个简化的示例( jsfiddle ):
我写这个例子只是为了说明这个想法,在生产代码中使用 FileSaver.js 代替。
笔记
较旧的浏览器不支持“下载”属性,因为它是 HTML5 的一部分。
浏览器认为某些文件格式不安全,下载失败。保存带有 txt 扩展名的 JSON 文件对我有用。