gpt4 book ai didi

javascript - Chrome 扩展程序 : move downloaded file to input field

转载 作者:行者123 更新时间:2023-11-28 08:41:19 24 4
gpt4 key购买 nike

我正在尝试使用我构建的小型 chrome 扩展来迁移图像。该扩展由 5 个文件组成:

popup.html - 插件 html 文档

 Has some html buttons
also has script link to my settings.js file that listens for the image downlaod button to be clicked and send a message to my content script : run.js to find the images

run.js - 内容脚本(可以访问网页 DOM)。

This script recieves the message from run.js which then finds all the images names and image links i want to download. It puts them into an object and sends them via message to the backgorund script : bootstrap.js

bootstrap.js - 运行后台页面并可以访问 chrome api。

var Downloads = [];
chrome.extension.onMessage.addListener(function(request, sender, sendResponse)
{
if(request.message.method == 'download'){
for( var d = 0; d <= request.message.imageLinks.length; d++ ){
chrome.downloads.download( {url: request.message.imageLinks[d],
filename: request.message.imageName[d]}, function(id){

});
sendResponse('done');
}
}
});

这一切都运行得很好。它循环浏览图像并下载它们。我现在需要做的是:获取我刚刚下载的图像,并将它们插入另一个网站上的文件上传字段(我在另一个选项卡中打开),这些字段具有相同的字段名称等。我看到 chrome 有一个

//Initiate dragging the downloaded file to another application. Call in a javascript ondragstart handler.
chrome.downloads.drag(integer downloadId)

起初我认为这可能有效,因为您可以手动将下载的图像拖到 html 文件上传字段中,而无需单击并选择文件。但我找不到任何文档/示例。

有谁知道可以使用 javascript/chrome api 来完成此任务吗?

最佳答案

首先您需要访问您下载的文件的内容。

为此,您需要在 list 文件中添加对 file://* 的权限。然后,您可以使用 chrome.downloads.search 循环浏览下载的文件,并获取每个文件在系统中的路径(DownloadItem.filename 属性)。对于每个文件,向 URL file://{filepath} 发出 GET XMLHttpRequest 以获取文件的内容。

获得该内容后,您可以将其转换为 DataUrl 并以编程方式将文件添加到表单的 FormData(但不是实际输入,只是最后提交的 FormData)。请参阅this answer对于这部分。

关于javascript - Chrome 扩展程序 : move downloaded file to input field,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20460268/

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