JavaScript. Подробное руководство, 6-е издание, стр. 390
22.6.2. Загрузка двоичных объектов
Глава 18 охватывает тему выполнения HTTP-запросов с помощью объекта
<b>XMLHttpRequest</b>Пример 22.9 демонстрирует простой способ загрузки двоичного объекта из Веб. Сравните его с примером 18.2, который загружает содержимое URL-адреса как простой текст.
Пример 22.9, Загрузка двоичного объекта с помощью объекта <b>XMLHttpRequest</b>
<b>// Запрашивает методом GET содержимое URL в виде двоичного объекта и передает его</b><b>// указанной функции обратного вызова. Этот программный код не тестировался: на тот</b><b>// момент, когда он был написан, броузеры еще не поддерживали этот прикладной интерфейс, </b><b>function getBlob(url, callback) {</b><b> var xhr = new XMLHttpRequest(); // Создать новый объект XHR</b><b> xhr.open("GET", url); // Указать URL-адрес</b><b> xhr.responseType = "blob" // Желательно получить двоичный объект</b><b> xhr.onload = function() { // onload проще, чем onreadystatechange</b><b> callback(xhr.response): // Передать ответ функции обратного вызова</b><b> } // Отметьте: .response, а не .responseText</b><b> xhr.send(null); // Послать запрос</b><b>}</b>Если загружаемый двоичный объект слишком велик и вам хотелось бы начать его обработку уже в процессе загрузки, можно задействовать обработчик события
<b>onprogress</b>22.6.3. Конструирование двоичных объектов
Двоичные объекты часто представляют фрагменты данных из внешних ресурсов, таких как локальные файлы, URL-адреса или базы данных. Но иногда вебприложению требуется создать собственный двоичный объект, чтобы выгрузить его на веб-сервер, сохранить в файле или в базе данных, или передать его фоновому потоку выполнения. Создать объект
<b>Blob</b><b>BlobBuilder</b><b>// Создать новый объект BlobBuilder</b><b>var bb = new BlobBuilder();</b><b>// Добавить в двоичный объект строку и отметить ее конец символом NUL</b><b>bb.append("Данный двоичный объект содержит этот текст и 10 ” +</b><b> "32-битных целых чисел с прямым порядком следования байтов.");</b><b>bb.append("\0"); // Добавить символ NUL, чтобы отметить конец строки</b><b>// Сохранить некоторые данные в объекте ArrayBuffer</b><b>var ab = new ArrayBuffer(4*10);</b><b>var dv = new DataView(ab);</b><b>for(var і = 0: і < 10; i++) dv.setlnt32(i*4,i);</b><b>// Добавить ArrayBuffer в двоичный объект</b><b>bb.append(ab);</b><b>// Теперь извлечь полученный двоичный объект, указав искусственный М1МЕ-тип</b><b>var blob = bb.getBlob("x-optional/mime-type-here");</b>В начале этого раздела мы узнали, что двоичные объекты имеют метод
<b>slice(),</b><b>append()</b><b>BlobBuilder</b>22.6.4. URL-адреса, ссылающиеся на двоичные объекты
В предыдущих разделах было показано, как можно получить или создать двоичный объект. Теперь мы поговорим о том, что можно делать с полученными или созданными двоичными объектами. Самое простое, что можно сделать с двоичным объектом, - это создать URL-адрес, ссылающийся на него. Такой URL-адрес можно использовать везде, где используются обычные URL-адреса: в элементах DOM, в таблицах стилей и даже при работе с объектом
<b>XMLHttpRequest</b>Создаются URL-адреса, ссылающиеся на двоичные объекты, с помощью функции
<b>createObjectURL().</b><b>Window</b><b>var getBlobURL = (window.URL && URL.createObjectURL.bind(URL)) ||</b><b> (window.webkitURL && webkitURL.createObjectURL.bind(webkitURL)) ||</b><b> window.createObjectURL;</b>Фоновые потоки выполнения также могут использовать этот прикладной интерфейс и обращаться к тем же функциям, в том же объекте URL (или webkitURL).
Если передать двоичный объект функции
<b>createObjectURL(),</b><b>Blob</b>