2013-12-08 1 views
1

Я пытаюсь перенести изображения с помощью небольшого расширения chrome, которое я построил. расширение состоит из 5 файлов:Расширение Chrome: переместите загруженный файл в поле ввода

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 - запускает справочную страницу и имеет доступ к хромическому 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'); 
    } 
} 
}); 

Все это прекрасно работает и денди. Он просматривает изображения и загружает их. Что мне нужно сделать сейчас: сделайте снимки, которые я только что загрузил, и вставьте их в поля для загрузки файлов на другом веб-сайте (который я открываю на другой вкладке), которые имеют одинаковые имена полей ect .. Я вижу, хром имеет

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

Сначала я думал, что это может работать, так как вы можете вручную перетащить загруженный файл в поле загрузки файла HTML без мыши и выберите файл. Но я не могу найти документацию/примеры на нем.

Кто-нибудь знает, что можно добиться этого с помощью javascript/chrome api?

ответ

0

Для начала вам необходимо получить доступ к содержимому загруженных вами файлов.

Для этого вам необходимо добавить разрешение в file://* в файл манифеста. Затем вы можете запрограммировать загруженные файлы с помощью chrome.downloads.search и получить путь к каждому файлу в системе (DownloadItem.filename). Для каждого файла сделайте GET XMLHttpRequest на url file://{filepath}, чтобы получить содержимое файла.

После того, как у вас есть этот контент, вы можете преобразовать его в DataUrl и программно добавить файл в FormData вашей формы (а не фактические входы, но только FormData, представленный в конце). См. this answer для этой части.

Смежные вопросы