Опубликовать двоичные данные кросс-домен в JavaScript - PullRequest
3 голосов
/ 17 февраля 2011

Я пишу расширение для браузера Chrome, которое делает снимок текущего представления вкладки и загружает его в API веб-службы, который я не контролирую.В библиотеке расширений Chrome есть функция (chrome.tabs.captureVisibleTab. См. http://code.google.com/chrome/extensions/tabs.html), которая делает снимок и возвращает данные в URL-адресе данных. Я зашел в тупик относительно того, как загрузить эти данные.

Я пытался написать свой собственный запрос из нескольких частей и использовать ajax-запрос для POST-данных, но ajax настаивает на UTF-8-кодировании данных, а API - на 8-битном кодированном двоичном файлеЯ подумал, может быть, с помощью плагина загрузки файлов, как http://malsup.com/jquery/form/ будет работать, но я не могу получить данные из переменной JS в форме, которую примет загрузчик.

Любые идеи по крайней мереновый путь исследования будет высоко оценен.

1 Ответ

2 голосов
/ 17 февраля 2011

Оказывается, что вы можете сделать это.

В Chrome есть способ отправить BLOB-объект через XMLHTTPRequest.

Вот ссылка на пример кода из системы отслеживания проблем Chromium:

http://code.google.com/p/chromium/issues/detail?id=35705#c34

XMLHttpRequest.prototype.sendAsBinary = function(datastr,contentType) {
    var bb = new BlobBuilder();
    var len = datastr.length;
    var data = new Uint8Array(len);
    for (var i=0; i<len; i++) {
            data[i] = datastr.charCodeAt(i);
    }
    bb.append(data.buffer);
    this.send(bb.getBlob(contentType));
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...