将输入文件传递给后台脚本

2023-12-02

我想将输入文件从内容页面传递到扩展后台脚本,然后使用文件读取器()在扩展后台脚本中。

所以在网页中我有一个<input type="file">从 onchange 事件中,我将文件从内容脚本传递到后台页面,如下所示:

 var myfile = document.getElementById('fileid').files[0];
 chrome.runtime.sendMessage({myevent: "start", inputfile: myfile}, function(response) {});

在后台脚本中我有这个:

chrome.runtime.onMessage.addListener(function(message,sender,sendResponse){

   if(message.myevent==="start")
   {
      var reader = new FileReader();

         reader.onload = function(e) {
              // file is loaded 
         }  


       reader.readAsArrayBuffer(message.inputfile);
   }
});

但 FileReader 没有加载它,我不确定这是否是正确的方法,但我需要的只是将输入文件元素传递给后台脚本并使用 FileReader 加载它,以从后台脚本使用 HTTP POST 发送它。请告诉我哪里出了问题或者如何正确地做。如果我看到示例代码将会有很大帮助,因为我是 chrome 扩展开发的新手,而且经验不足。


通过 Chrome 扩展消息 API 发送的所有消息都必须是 JSON 可序列化的。 如果你想在后台页面获取文件的内容,你最好为该文件创建一个(临时)URLFile对象,将此 URL 传递到后台页面并使用XMLHttpRequest获取其内容:

// Create URL
var url = URL.createObjectURL(myfile);
// Pass URL to background page (ommited for brevity) and load it..
var x = new XMLHttpRequest();
x.onload = function() {
     var result = x.response;
     // TODO: Use [object ArrayBuffer]
};
x.open('GET', url); // <-- blob:-url created in content script
x.responseType = 'arraybuffer';
x.send();

但是为什么要将文件发送到后台页面呢?内容脚本还可以发送跨源请求。

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

将输入文件传递给后台脚本 的相关文章

随机推荐

  • 如何跳过 XML 反序列化中引发错误的对象?

    我正在对非常大的 XML 文档 有时超过 200MB 使用 XML 反序列化 大多数文档都运行得很好 但有时反序列化函数会抛出错误 例如 当整数是字符串时 您会收到 格式错误 当无法识别指定的类型时 您会收到错误 Input string
  • 如何在dust.js中实现自定义渲染逻辑?

    我使用dust js 来呈现变量名称列表 这些名称有时很长并且包含下划线 例如 SUM COUNT LABOR COUNTRIES SMS PAST 浏览器不会用下划线换行 因此它会变得难看 我希望我的灰尘模板在每个下划线后添加一个零宽度的
  • 简单的 OpenGL GUI 框架用户交互建议? [关闭]

    Closed 这个问题是基于意见的 目前不接受答案 我正在从头开始设计一个简单的 GUI 框架作为一个项目 使用 OpenGL 没有任何其他外部东西 并且需要一些关于如何实现用户交互的建议 基本上 我有一个基类GUIItem所有元素都继承自
  • 快速合并/连接两个表linux命令行

    假设我有两个相对较大的制表符分隔文件 file1 txt file2 txt file1 txt id tcity tcar ttype tmodel file2 txt id tname trating 让我们假设 file1 txt 有
  • 在cardlayout中切换卡片后运行方法

    我确信以前有人问过这个问题 但我的谷歌今天不强 我有一个使用 CardLayout 作为其管理器的 JFrame 当我在不使用开关的情况下切换到每个 JPanel 时 如何运行 Start 方法 我用来将框架添加到布局的代码是 Adds J
  • 如何使用 SQLiteAssetHelper 从加密数据库读取数据?

    我有一个加密的数据库并插入资产文件夹中 我正在使用 SQLiteAssetHelper 类从数据库检索数据 当我从加密数据库检索数据时 它会抛出类似 E SQLiteLog 26 文件已加密或不是数据库 的错误 无论如何 有没有使用 SQL
  • 在Java中通过txt文件创建对象到数组中

    我正在尝试完成一个小程序 我有一个文本文件 txt 来存储我所拥有的对象的不同数据 该文件的结构如下 例如 data txt Sedane 2005 195000 Diesel Blue SUV 2013 34000 Fuel Black
  • 避免对某些自动完成的订单重复发送电子邮件通知

    我在 WooCommerce 上使用这个小小的和平代码从这个答案基于支付网关自动完成付费处理订单 AUTO COMPLETE PAID ORDERS IN WOOCOMMERCE add action woocommerce thankyo
  • 使用 32 位哈希时发生冲突的概率

    我的数据库中有一个 10 个字符的字符串键字段 我已经使用 CRC32 对该字段进行哈希处理 但我担心重复项 有人可以告诉我在这种情况下发生碰撞的可能性吗 P S 我的字符串字段在数据库中是唯一的 如果字符串字段的数量为 100 万个 那么
  • 如何使用通用方法实现特征?

    我正在尝试实现一个包含通用方法的特征 trait Trait fn method
  • plt.plot(x,y) 和 plt.show() 如何工作?

    我想知道之间发生的基本骨干流程plt plot x y and plt show 的命令matplotlib pyplot 详细说明一下 这段代码 plt plot x y plt show 显示所需的图表 没问题 另外 代码 plt pl
  • 在 Azure DevOps 发布管道中运行 Java Selenium 测试

    我正在为 AzureDevops CI CD 管道中的 Java 项目进行 POC 我创建了一个 Maven 项目 其中包含 Selenium 测试 TestNG 该测试针对独立于我的项目的演示网站运行 我想在构建管道中运行单元测试 并在发
  • 有什么简单的方法来创建具有固定长度和总和的数组组合吗?

    例如 array 4 0 0 生成的数组必须具有固定长度 并且数组的总和也必须是固定的 获得此输出的最短且有效的方法是什么 允许导入函数 Output 4 0 0 0 4 0 0 0 4 3 1 0 0 3 1 1 0 3 1 3 0 0
  • 在 PDO 连接字符串中使用常量并通过 PDO 连接调用函数 [关闭]

    这个问题不太可能对任何未来的访客有帮助 它只与一个较小的地理区域 一个特定的时间点或一个非常狭窄的情况相关 通常不适用于全世界的互联网受众 为了帮助使这个问题更广泛地适用 访问帮助中心 我在 PDO 连接中使用常量以及调用包含 PDO 连接
  • Angular $http.post 返回空错误

    我正在使用 Angular JS 将一些数据发送到 NodeJS 服务器 当我使用curl时 我取回了发送的数据 正确的结果 curl d MyKey My Value H Content Type application json htt
  • WMF / EMF 文件格式转换 C#

    在我的程序中 我需要 播放 或 解析 Windows 图元文件 WMF 和 EMF 我查遍了 MSDN 和 Google 最接近的是 Graphics 枚举元文件方法 我可以让它工作 因为我的 EnumerateMetafileProc 回
  • python win32gui查找子窗口

    例如首先你必须找到 Skype 的 hwnd hwnd win32gui FindWindow None skype 以及他所有的子窗口及其标题 child 任何想法 这段代码显示hwndEditPlus 子窗口的数量WindowsText
  • 如何使用关键字选择最小值

    我已经创建了表 Stu dep det CREATE TABLE stu dept cs s d id int 10 unsigned NOT NULL auto increment stu name varchar 15 gender v
  • 如何防止文档类型被添加到 HTML 中?

    我一直在用 DOM 处理这个 tidy up messy html 标签 但现在我意识到一个更大的问题 content p a href this is a link a p function tidy html content allow
  • 将输入文件传递给后台脚本

    我想将输入文件从内容页面传递到扩展后台脚本 然后使用文件读取器 在扩展后台脚本中 所以在网页中我有一个