У меня есть аддон Firefox (созданный с использованием аддона Firefox SDK), который при получении инструкции делает снимок экрана текущей активной вкладки и отправляет ее в виде запроса AJAX на удаленный сервер.
Следующий код в addon-script main.js отвечает за получение эскиза
var tab_image_data=tabs.activeTab.getThumbnail();
var tab_image_data = base64.encode(tab_image_data);
panel.port.emit("screenshot",{image_data:tab_image_data});
Данные изображения, сгенерированные функцией getThumbnail (), отправляются в файл сценария содержимого, принадлежащий панели.
В скрипте содержимого следующий код отвечает за отправку данных изображения на сервер.
var tab_image_data=addonmessage.image_data;
var myBlob = new Blob([tab_image_data], { "type" : "text/base64data"} );
var formData = new FormData();
formData.append('img',myBlob);
var xhr = new XMLHttpRequest();
xhr.open("POST", "http://xyz.abc.com/imageshot/index.php", true);
xhr.onload = function() {
if (xhr.status == 200) {
console.log('all done: sq');
} else {
console.log('Nope');
}
};
xhr.send(formData);
Все отлично работает, и файл изображения создается на сервере в формате JPEG. Но когда я пытаюсь просмотреть это изображение, программа просмотра фотографий Windows выдает ошибку не поддерживаемого формата файла.
Я пытался кодировать данные base64 перед отправкой, но это не сработало. Удивительно, но у меня есть расширение Chrome, которое выполняет аналогичную функцию и работает безупречно. В обоих случаях один и тот же скрипт php используется на стороне сервера.
Любая помощь по этому вопросу будет высоко оценена
Заранее спасибо.
Задача ещё не решена.
Других решений пока нет …