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

2024-03-15

Update

I have 解决了这个问题(谢谢@丹尼尔赫尔 https://stackoverflow.com/users/3591628/daniel-herr)通过使用 Blob URL / 对象 URL (URL.createObjectURL(blob)),但是我仍然很好奇为什么使用时会出现此错误data: URLs


我正在使用 WebExtensions API 创建一个适用于 Chrome 和 Firefox 的扩展程序。

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

我尝试使用downloads.download() https://developer.mozilla.org/en-US/Add-ons/WebExtensions/API/Downloads/download下载文件,但是我收到错误:

错误:参数选项类型错误(处理 url 时出错:错误:URL 的访问被拒绝data:text/csv;charset=utf-8;base64,{data...})用于下载。下载。

我尝试过添加"<all_urls>" to the 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})

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


My 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 而不是 Data 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',
})
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 downloads.download() API 将数据 URI 保存为文件 的相关文章

  • 如何在发布期间复制未版本化的测试资源:执行?

    我的问题与 Maven 在发布时不会复制未跟踪的资源 https stackoverflow com questions 10378708 maven doesnt copy untracked resources while releas
  • CFdump cfcomponent cfscript

    可以在 cfcomponent 中使用 cfdump 吗 可以在 cfscript 中使用 cfdump 吗 我知道 anser 不是 那么如何发出 insde cfcomponent 函数的值 cf脚本 我用的是CF8 可以在 cfcom
  • 如何在执行新操作时取消先前操作的执行?

    我有一个动作创建器 它会进行昂贵的计算 并在每次用户输入内容时调度一个动作 基本上是实时更新 但是 如果用户输入多个内容 我不希望之前昂贵的计算完全运行 理想情况下 我希望能够取消执行先前的计算并只执行当前的计算 没有内置功能可以取消Pro
  • 使用.NET技术录制屏幕视频[关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 有没有一种方法可以使用 NET 技术来录制屏幕 无论是桌面还是窗口 我的目标是免费的 我喜欢小型 低
  • Redis如何存储关联数组?设置、散列还是列表?

    我对 Redis 的所有可用存储选项有点困惑 我想做一些简单的事情 并且不想过度设计它 我正在与phpredis and Redis v2 8 6 我有一个需要存储的简单关联数组 我还需要能够通过其键检索项目并循环遍历所有项目 a arra
  • PHPUnit 和 Zend Framework assertRedirectTo() 问题

    我在创建的测试中遇到了 assertRedirectTo 问题 下面是我使用的代码 public function testLoggedInIndexAction this gt dispatch this gt assertControl
  • 如何使用asm.js进行测试和开发?

    最近我读到asm js规范 看起来很酷 但是是否有任何环境 工具来开发和测试这个工具 这还只是处于规范阶段吗 您可以尝试使用 emscripten 和 ASM JS 1 并从侧分支在 firefox 构建中运行它 有关 asm js 的链接
  • 从超立方体图像中获取文本的确切位置

    使用 tesseract 中的 GetHOCRText 0 方法 我能够检索 html 中的文本 并在 webview 中呈现 html 时 我能够获取文本 但图像中文本的位置与输出不同 任何想法都非常有帮助 tesseract gt Se
  • Vue.js[vuex] 如何从突变中调度?

    我有一个要应用于 json 对象的过滤器列表 我的突变看起来像这样 const mutations setStars state payload state stars payload this dispatch filter setRev
  • Spring Boot @ConfigurationProperties 不从环境中检索属性

    我正在使用 Spring Boot 1 2 1 并尝试创建一个 ConfigurationProperties带有验证的bean 如下所示 package com sampleapp import java net URL import j
  • 对来自流读取器的过滤数据执行小计

    编辑问题未得到解答 我有一个基于 1 个标准的过滤输出 前 3 个数字是 110 210 或 310 给出 3 个不同的组 从流阅读器控制台 问题已编辑 因为第一个答案是我给出的具体示例的字面解决方案 我使用的实际字符串长度为 450 个
  • 循环内的异步性

    我正在使用 jQuery getJSON 用于从一组实用程序的给定 URL 检索数据的 API 我真的很想找到一种为每个实用程序重用代码 完全相同 的方法 由于循环的执行与 ajax 调用无关 因此我无法找到保留循环值的方法 我知道这个描述
  • 用于验证目的的动态查找方法

    我正在使用 Ruby on Rails 3 0 7 我想在运行时查找一些记录以进行验证 但为该查找方法传递 设置一个值 也就是说 在我的班级中 我有以下内容 class Group lt lt ActiveRecord Base valid
  • rspec 中的模拟方法链

    有一系列方法可以获得user目的 我试图模拟以下内容以返回user in my Factory Girl current user AuthorizeApiRequest call request headers result 我可以模拟该
  • 如何使用 Pycharm 安装 tkinter? [复制]

    这个问题在这里已经有答案了 I used sudo apt get install python3 6 tk而且效果很好 如果我在终端中打开 python Tkinter 就可以工作 但我无法将其安装在我的 Pycharm 项目上 pip
  • Erlang dict的时间复杂度

    我想知道 Erlang OTP 是否dict模块是作为哈希表实现的 在这种情况下它是否能提供这样的性能 平均情况 Search O 1 n k Insert O 1 Delete O 1 n k 最坏的情况下 Search O n Inse
  • Statsmodels.formula.api OLS不显示截距的统计值

    我正在运行以下源代码 import statsmodels formula api as sm Add one column of ones for the intercept term X np append arr np ones 50
  • 在 Nexus 7 2013 上更改方向时 CSS 媒体查询不起作用

    我目前正在我的笔记本电脑 台式电脑和 Nexus 7 2013 上测试 CSS 媒体查询 除了 Nexus 7 之外 它们在台式机和笔记本电脑上都运行良好 当我更改方向时 除非刷新页面 否则样式不会应用 例如 以纵向模式握住设备时 页面正常
  • 如何在react-highcharts中使用图表工具提示格式化程序?

    如何使用图表工具提示格式化程序 我正在使用高图表的反应包装器 我有这样的配置 const CHART CONFIG tooltip formatter tooltip gt var s b this x b each this points
  • 强制 Listview 不重复使用视图(复选框)

    我做了一个定制Listview 没有覆盖getView 方法 Listview 中的每个项目都具有以下布局 联系布局 xml

随机推荐

  • Windows CreateFile 可能的错误代码

    我正在尝试将 Windows Linux 和 Mac 文件 IO 调用抽象为宏 以避免 C 运行时 所以没有fopen fclose ETC 我实际上做了很多工作 但遇到了绊脚石 我试图将每个平台可能抛出的所有可能错误归结为常见错误的子集
  • codeigniter 中的 allowed_uri_chars

    从 Facebook 返回时 使用 Facebook 登录 我收到错误 您提交的 URI 包含不允许的字符 我已将 allowed uri chars 设置如下 config permitted uri chars a z 0 9 我的网址
  • 在 Woocommerce 中以编程方式应用优惠券

    在 Woocommerce 中 如果购物车中的重量超过 100 磅 我试图找到一种对整个客户订单应用 10 折扣的方法 我正在实现这一目标 对于下一步 我正在寻找一种通过functions php 通过action hook 以编程方式应用
  • 在哪里可以找到 DownloadManager 的 ContentProvider 实现

    我已经尽可能多地搜索了android的开源代码 但我还没有找到通过2 3 SDK中的DownloadManager进行实际下载的实现 我已经找到了下载管理器的源 http grepcode com file repository grepc
  • 两个类之间的 iPhone KVO

    我的应用程序中有两个类 A 类和 B 类 A 类和 B 类都是 UIViewController 的实例 A 类有一个按钮 按下该按钮时会将 B 类推入堆栈 B 类有一个字符串 A 类希望观察该字符串并根据需要更新其接口 我已经能够使用 s
  • Java将“Excel日期序列号”转换为“日期时间”[重复]

    这个问题在这里已经有答案了 如何使用Java将 Excel日期序列号 即33257 415972222225 转换为DateTime 即19 01 1991 09 59 00 您还可以查看Apache POI 源代码 https githu
  • 如何用 swift 创建一个闹钟应用程序?

    我正在尝试用 swift 创建一种闹钟应用程序 但我不知道如何设置闹钟模型 我试过了UILocalnotification但我不希望我的用户除了设置闹钟之外参与闹钟应用程序的流程 然后尝试了NSTimer and NSRunloop等等 但
  • 相机插件 flutter web

    你好我想知道是否有一个用于 flutter web 的相机插件 以便拍摄照片并将其存储在临时路径中 然后将其上传到 firestorage 如果我理解正确 我希望您已经尝试过这些软件包 image picker 和 image picker
  • 如何在WP中将CookieContainer设置为BackgroundTransferRequest对象?

    我在用BackgroundTransferRequest and BackgroundTransferService用于上传一些数据 无论如何我可以设置CookieContainer to the TransferRequest None
  • @AutoConfigureWebMvc 和 @AutoConfigureMockMvc 有什么区别?

    在什么情况下我应该使用每一个 AutoConfigureWebMvc 如果您需要配置 Web 层进行测试但又不这样做 请使用此选项 需要使用MockMvc 它启用与 Web 层相关的所有自动配置ONLY网络层 这是整体自动配置的一个子集 它
  • 背景图片和搜索引擎优化

    目前 我的网站上有一些在 CSS 文件中定义为背景图像的图像 代码如下所示 HTML a href http domain com title Website Title class image a The CSS image backgr
  • 定义分段函数(例如多项式)

    在 C 中定义分段函数 例如在使用样条曲线时需要 的最佳方法是什么 Example f1 x if x from 0 5 f x f2 x if x from 5 10 f3 x if x from 10 20 我当前的方法如下所示 cla
  • 使用 lucene 模糊搜索和 Azure 搜索的同义词

    我希望能够同时处理模糊搜索和同义词 我尝试了多种方法 但无法使其正常工作 我的索引中有这些值 white black light dark 这个同义词规则 white light black dark 如果我执行查询queryType fu
  • 如何在android中以编程方式控制横向和纵向?

    我使用 android sdk 4 0 开发应用程序 并将该 apk 文件安装在我的三星选项卡中 当我运行该应用程序时 它工作正常 如果我将选项卡纵向更改为横向或相反 屏幕也会发生变化 但我的要求是 无论将模式更改为纵向还是横向还是横向还是
  • 使用 Quickbook 连接器和 Nodejs 进行 Quickbook(桌面)API 集成

    我是 Quickbooks 的新手 但我已经安装了 Quickbook Premier Desktop Edition 并拥有一个帐户以及 Quickbook 连接器 我正在尝试通过可用的 Quickbook 连接器将自定义应用程序中的发票
  • 类型错误:尝试更改数组列表的某些元素时,列表索引必须是整数,而不是元组

    我有一个 2 x n 的 x 和 y 坐标数组的列表 old array 1 2 3 4 5 6 array 10 20 30 40 50 60 我试图将 y 坐标 每个数组的第二行 移动某个值 shift 但是 当我尝试通过以下方法执行此
  • Phonegap 中的本地通知 [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我想在我的 iOS Phonegap 应用程序中获得本地通知 我遵循了很多教程和代码 但没有帮助 任何人都可以指导我吗 None
  • 在循环中创建的 jQuery 事件处理程序

    所以我有一组这样的事件 slider 1 click function event switchBanners 1 true slider 2 click function event switchBanners 2 true slider
  • mySQLi 准备好的语句无法 get_result()

    我对 mySQLi 完全困惑了 尽管我多年来一直使用过程式 mysql 调用 但我想习惯于为其提供的数据库安全 mySQL 注入保护编写准备好的语句 我正在尝试编写一个简单的选择语句 是的 我知道为此进行过程调用可以增强性能 跑步时 我得到
  • 使用 downloads.download() API 将数据 URI 保存为文件

    Update I have 解决了这个问题 谢谢 丹尼尔赫尔 https stackoverflow com users 3591628 daniel herr 通过使用 Blob URL 对象 URL URL createObjectUR