gpt4 book ai didi

javascript - 使用 downloads.download() API 将数据 URI 保存为文件

转载 作者:数据小太阳 更新时间:2023-10-29 06:00:26 29 4
gpt4 key购买 nike

更新

我已经通过使用 Blob URL/Object-URL ( URL.createObjectURL(blob) )解决了这个问题(感谢 @DanielHerr ),但是我仍然很好奇为什么在使用 data: URL 时会出现这个错误


我正在使用 WebExtensions API 为 Chrome 和 Firefox 创建一个扩展。

扩展会随着时间的推移收集数据,我想实现一个将其导出为 CSV 文件的功能。

我尝试使用 downloads.download() 下载文件,但出现错误:

Error: Type error for parameter options (Error processing url: Error: Access denied for URL data:text/csv;charset=utf-8;base64,{data...}) for downloads.download.

我尝试将 "<all_urls>" 添加到 permissions 中的 manifest.json 键,但这没有任何区别。

这是我使用的代码:

var csv = 'Hello, World!' // Real data goes here
var url = 'data:text/csv;charset=utf-8;base64,' +
window.btoa(unescape(encodeURIComponent(csv)))

chrome.downloads.download({'url': url})

我似乎无法弄清楚如何解决这个问题,因此非常感谢您的帮助!谢谢!


我的 manifest.json 看起来像这样:

{
"manifest_version": 2,
"name": "Name",
"version": "1.0.0",
"description": "Description",
"icons": {
"16": "/icons/icon-16.png",
"32": "/icons/icon-32.png",
"48": "/icons/icon-48.png",
"64": "/icons/icon-64.png",
"96": "/icons/icon-96.png"
},
"applications": {
"gecko": {
"id": "@name",
"strict_min_version": "48.0"
}
},
"background": {
"scripts": ["/scripts/a.js"]
},
"permissions": [
"storage",
"tabs",
"activeTab",
"downloads",
"<all_urls>"
]
}

a.js 包含导出为 CSV 的代码。

我把剩下的代码去掉了,只剩下 manifest.json , a.js 和图标文件,但还是报同样的错误。

最佳答案

我通过使用 Blob URL/Object-URL 而不是数据 URI 解决了这个问题:

var csv = 'foo,bar,baz'
var blob = new Blob([csv], {type: "text/csv;charset=utf-8"})

chrome.downloads.download({
'url': URL.createObjectURL(blob),
'filename': 'file.csv',
})

关于javascript - 使用 downloads.download() API 将数据 URI 保存为文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40269862/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com