Расширение Chrome: как передать ArrayBuffer или Blob из скрипта содержимого в фоновый скрипт без потери его типа?

У меня есть контентный скрипт, который загружает некоторые двоичные данные с помощью XHR, которые затем отправляются в фоновый скрипт:

var self = this;
var xhr = new XMLHttpRequest();
xhr.open('GET', url);
xhr.responseType = 'arraybuffer';
xhr.onload = function(e) {
  if (this.status == 200) {
     self.data = {
        data: xhr.response,
        contentType: xhr.getResponseHeader('Content-Type')
     };
  }
};
xhr.send();

... later ...
sendResponse({data: self.data});

После получения этих данных в фоновом скрипте, я хотел бы сформировать другой XHR-запрос, который загружает эти двоичные данные на мой сервер, поэтому я делаю:

var formData = new FormData();
var bb = new WebKitBlobBuilder();
bb.append(data.data);
formData.append("data", bb.getBlob(data.contentType));
var req = new XMLHttpRequest();
req.open("POST", serverUrl);
req.send(formData);

Проблема в том, что файл, загруженный на сервер, содержит только эту строку: "[объект Object]". Я предполагаю, что это происходит потому, что тип ArrayBuffer каким-то образом теряется при передаче его из контентного процесса в фоновый? Как я могу это решить?

11
задан Rob W 9 April 2012 в 11:41
поделиться