HTML5 File API readAsBinaryString считывает файлы гораздо большего размера, чем файлы на диске

Полный код на https://gist.github.com/992562 .

Я использую HTML File API и перетаскиваю файлы для загрузки через XHR-сообщение в PHP-скрипт. Процедурно кажется, что все работает нормально, однако, когда я пытаюсь открыть загруженные файлы, любой нетекстовый файл намного больше, чем исходный файл, и не открывается. Это явно не те данные, которые были на исходном диске. Однако текстовые файлы точно такие же и открываются нормально.

Некоторые примеры загрузки 3-х файлов с помощью перетаскивания: файл 1: текст / XML: на диске 13 КБ, загружено 13 КБ, отлично работает файл 2: изображение / PNG: на диске 14 КБ, загружено 18 КБ, не открывается файл 3: приложение / XLSX: на диске 12 КБ, загружено 14 КБ, не открывается

Все сводится к следующему (после настройки заголовков xhr, готового файлового объекта и т. д.):

  var reader = new FileReader();
  reader.onload = function(evt) {
    xhr.send(evt.target.result)
  }
  reader.readAsBinaryString(f);

возврат большого размера, плохие данные. Что-то явно не так?

8
задан obrienmd 26 May 2011 в 04:47
поделиться