Почему я должен заботиться о том, чтобы отправлять их через XHR2? (Я могу понять значение File и FormData)
Ответ 1
Это попытка заменить старый метод, который будет принимать "строку" и вырезать его части.
Вы должны использовать ArrayBuffer, когда вам нужен типизированный массив, потому что вы намереваетесь работать с данными и блобом, когда вам просто нужны данные файла.
Blobs (по спецификации вообще) имеют место для MIME и проще вставлять в API файлов HTML5, чем другие форматы (он более роден для него).
ArrayBuffer позволяет нам работать с типизированными массивами, которые намного быстрее, чем манипуляции с строками, для работы с конкретными байтами, и позволяет нам определить, какие типы сегментов массива фактически существуют. Поскольку JavaScript не строго типизирован, трудно взять файл, который может быть разбит на массив из 32-битных ints или, возможно, 64-битных поплавков (только представьте себе 8-битные ints - это будет кошмар с точки зрения производительности с манипуляцией строк и побитовой вычисления, особенно с помощью unicode).
Насколько я могу судить, вы всегда можете перемещать blob в буфер массива или в строковое представление, но это родное для XHR позволяет быстрее запускать скрипты, что является основным преимуществом.
Я бы использовал blob для работы с файловым API, но я бы использовал массив для предварительной обработки данных.