В Firefox 3.6 и Chrome использование xhr.send (файл) просто помещает необработанное содержимое в тело запроса, и это не является истинной загрузкой multipart / form-data.http://kaply.com/weblog/2010/05/20/post-multipart-form-xhr/
Но нельзя смешивать строку с содержимым файла во время отправки ().
Есть ли обходные пути?
xhr.sendAsBinary() нестандартно. Вместо этого используйте xhr.send(FormData), который создает запрос multipart/form-data, позволяет добавлять файлы и данные произвольной формы.
xhr.sendAsBinary()
xhr.send(FormData)
multipart/form-data
var formData = new FormData(); formData.append(file.name, file); var xhr = new XMLHttpRequest(); xhr.open('POST', '/upload', true); xhr.onload = function(e) { ... }; xhr.send(formData); // multipart/form-data
См. http://www.html5rocks.com/en/tutorials/file/xhr2/#toc-send-formdata
Ключевым моментом является использование sendAsBinary (body) вместо send (body).Смотрите последний комментарий на странице, на которую вы ссылаетесь!