Полный код на 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);
возврат большого размера, плохие данные. Что-то явно не так?