HTML5 File API XmlHttpRequest отправка (файл) отличается от отправки результата readAsBinaryString () - PullRequest
0 голосов
/ 17 декабря 2010

Я думал, что эти два куска кода (они работают в Chrome и Firefox) должны были делать то же самое, но они ведут себя по-разному. Они отправляют двоичное содержимое файла через объект XmlHttpRequest.

Прямая XHR отправка:

xhr.send(file);

Чтение файла и отправка содержимого через XHR:

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

Отправленные байты файла не совпадают между запросами (во втором файл больше, чем в первом, и файл поврежден).

Мне нужно, чтобы второй вариант работал.

Есть идеи?

1 Ответ

1 голос
/ 28 августа 2011

Я столкнулся с подобной проблемой - Повреждение FileReader в FormData

Результатом чтения является строка; вам нужно преобразовать его в буфер массива:

var result = e.target.result;
var l = result.length
var ui8a = new Uint8Array(l)
for (var i = 0; i < l; i++)
  ui8a[i] = result.charCodeAt(i);
var bb = new (window.BlobBuilder || window.MozBlobBuilder || window.WebKitBlobBuilder)()
bb.append(ui8a.buffer)
xhr.send(bb.getBlob())
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...