Способны ли методы Google Chrome Base64 обрабатывать двоичные данные из File API?

Я использую btoa и atob для Base64, но метод atob не работает с двоичными данными! Просто текст. Как я могу это решить?

if(!!window.createBlobURL || !!window.createObjectURL) {
    var bb = new BlobBuilder();
    var reader = new FileReader();
    var url_creator = window.createBlobURL || window.createObjectURL;
    bb.append(atob(msg.bit.file.data));
    reader.onloadend = function(e) {
      bb = new BlobBuilder();
      bb.append(e.target.result);
      var url = url_creator(bb.getBlob(msg.bit.file.type));
      window.open(url);
    }
    reader.readAsBinaryString(bb.getBlob(msg.bit.file.type));
  }

Где msg.bit.file.data — это файл в кодировке base64.


person Tomás Senart    schedule 04.12.2010    source источник
comment
Можете ли вы показать, как вы загружаете двоичные данные? Двоичные данные изначально в base64? Даже если вам удастся его расшифровать, как вы собираетесь его отображать?   -  person syockit    schedule 04.12.2010
comment
Да, пожалуйста, опубликуйте код, который точно показывает, что вы пытаетесь сделать. Без этого довольно сложно ответить.   -  person jorlow    schedule 06.12.2010


Ответы (1)


Если ваши данные уже двоичные (TypedArray), добавление в BlobBuilder должно просто работать.

Если данные возвращаются из XMLHttpRequest в Chrome, по крайней мере, у вас есть доступ к свойству responseBlob, которое можно использовать непосредственно в BlobBuilder.append().

person Kinlan    schedule 01.05.2011
comment
Параметр xhr.responseType ='blob' еще не реализован в Chrome. Пометьте crbug.com/52486. - person ebidel; 10.06.2011