Я пытаюсь загрузить большой двоичный объект с помощью FormData на Chrome. Я создаю веб-приложение. Пользователь может создать профиль и выбрать аватар, который является тегом img. Когда я пытаюсь выполнить запрос ajax, я создаю холст с изображением и вызываю на нем toDataURL. Затем я преобразую данные в двоичный контент с помощью этой функции
dataURItoBlob: function(dataURI) {
var binary = atob(dataURI.split(',')[1]);
var array = [];
for(var i = 0; i < binary.length; i++) {
array.push(binary.charCodeAt(i));
}
return new Blob([new Uint8Array(array)], {type: 'application/octet-stream'});
}
Когда blob создан, я добавляю его в formData и отправляю запрос ajax (с помощью jquery). Дело в том, что содержимое файла кажется пустым.
------WebKitFormBoundarysToAVAYMLPFfJF96
Content-Disposition: form-data; name="image"; filename="avatar.png"
Content-Type: application/octet-stream
------WebKitFormBoundarysToAVAYMLPFfJF96--
Используя FileReader, я делаю readAsText для большого двоичного объекта, и он действительно имеет контент:
�PNG
IHDR�
IDATx^���������v�"�`���^[l��N������k��X�B�[�i�eٜ����yg����E�dF����o~���{�s�sN(�˲�_t�ɤ����݇ns(Z�6ڇ>�O}}��b��l�����ks�̱��r�w�}��{��x<}�Q644XNN�;�~k7�|��z��V[[�����o�����rss��WTTXII�UWW[^^^��455Yqq���Ը��ߏ>���Xc
���s��o��Yg�ew�y�566��...
Кто-нибудь уже сталкивался с этой проблемой? Я просто не понимаю, почему запрос отправляет пустой файл.