A API de arquivos HTML5 readAsBinaryString lê os arquivos muito maiores, diferentes dos arquivos no disco

Código completo emhttps: //gist.github.com/99256.

Estou usando a API de arquivos HTML e arraste / solte para fazer upload de arquivos via XHR post para um script PHP. Procedimentalmente, tudo parece estar funcionando bem, no entanto, quando tento abrir os arquivos enviados, qualquer arquivo que não seja de texto é muito maior que o arquivo de origem e não é aberto. Claramente, não são os mesmos dados que estavam no disco de origem. No entanto, os arquivos de texto são exatamente iguais e abrem perfeitament

Alguns exemplos em um carregamento de arrastar / soltar em 3 arquivos: arquivo 1: texto / XML: no disco 13 KB, carregado 13 KB, funciona perfeitamente arquivo 2: image / PNG: no disco 14 KB, carregado 18 KB, não abra o arquivo 3: application / XLSX: no disco 12 KB, carregado 14 KB, não abrirá

Tudo se resume a isso (depois que os cabeçalhos xhr são configurados, o objeto de arquivo está pronto, etc):

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

retornando dados grandes e ruins. Existe algo claramente errado com isso?

questionAnswers(1)

yourAnswerToTheQuestion