Chrome扩展程序:将下载的文件移至输入字段

时间:2013-12-08 22:54:19

标签: javascript google-chrome plugins

我正在尝试使用我已构建的小型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可以实现这个目标吗?

1 个答案:

答案 0 :(得分:0)

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

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

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