Передача "файла" из всплывающего окна в скрипт содержимого - PullRequest
0 голосов
/ 03 июля 2019

Я использую API для передачи сообщений , и я успешно передаю переменные между всплывающим окном и сценарием содержимого, но передача файла не работает, он возвращает пустое значение в сценарий содержимого вместоданные файла.

Я уже пробовал:

Всплывающее окно:

<input type="file" id="file">
$(document).on('change', '#file', function() {
    var value = this.value;
    var fileName = typeof value == 'string' ? value.match(/[^\/\\]+$/)[0] : value[0];
    var fileData = this.files[0];
    // this prints the file data successfully to console
    console.log(fileData); 
    chrome.tabs.query({active: true, currentWindow: true}, function(tabs) {
        chrome.tabs.sendMessage(tabs[0].id, {action: "sendFile", file: fileData });
    });
});

Сценарий содержимого:

chrome.extension.onMessage.addListener(function(request, sender, sendResponse) {
    if (request.hasOwnProperty("action") && request.action == 'sendFile') {
        console.log(file); // <-- empty
    }
});

Есть ликакие-либо ограничения в API сообщений?или я что-то не так делаю?

Спасибо.

1 Ответ

0 голосов
/ 03 июля 2019

Как упомянуто в комментариях @wOxxOm, кажется, что передаваемые данные являются строковыми, поэтому файлы не будут проходить.

Однако я нашел отличное решение моего вопроса здесь:

https://stackoverflow.com/a/36930012/2654691

...