JavaScript. Подробное руководство, 6-е издание, стр. 389
Прежде чем приступать к работе с двоичным объектом, его необходимо получить. Сделать это можно множеством способов, одни из которых связаны с использованием уже знакомых вам прикладных интерфейсов, а другие - с прикладными интерфейсами, которые описываются ниже в этой главе:
• Двоичные объекты поддерживаются алгоритмом структурированного копирования (смотрите врезку «Структурированные копии» выше), а это означает, что их можно получить от другого окна или фонового потока выполнения вместе с событием «message» (разделы 22.3 и 22.4).

• Двоичные объекты можно извлекать из баз данных на стороне клиента, как описывается в разделе 22.8.
• Двоичные объекты можно загрузить из сети по протоколу HTTP, используя ультрасовременные возможности, определяемые спецификацией XHR2. Об этом рассказывается в разделе 22.6.2.
• Можно также создать свой двоичный объект, сконструировав его с помощью объекта
<b>BlobBuilder</b><b>ArrayBuffег</b><b>BlobBuilder</b>• Наконец, и, пожалуй, самое важное, - объект
<b>File</b><b>Blob</b><b>File</b><b>File</b><b>File</b>Получив двоичный объект, над ним можно выполнить различные операции, многие из которых являются симметричными операциям, описанным выше:
• Двоичный объект можно отправить другому окну или фоновому потоку выполнения с помощью метода
<b>postMessage()</b>• Двоичный объект можно сохранить в базе данных на стороне клиента (раздел 22.8).
• Двоичный объект можно выгрузить на сервер, передав его методу
<b>send()</b><b>XMLHttpRequest</b><b>File</b><b>Blob</b>• Можно воспользоваться функцией
<b>createObjectURL(),</b>• Можно воспользоваться объектом
<b>FileReader</b><b>ArrayBuffег</b>• Можно воспользоваться прикладным интерфейсом доступа к файловой системе и объектом
<b>FileWriter</b>В следующих подразделах демонстрируются простые способы получения и использования двоичных объектов. Более сложные приемы, связанные с использованием локальной файловой системы и базами данных на стороне клиента, будут описаны далее, в отдельных разделах.
22.6.1. Файлы как двоичные объекты
Элемент
<b><input type="file"></b><b>value</b>В броузерах, поддерживающих доступ к локальным файлам, свойство
<b>files</b><b><input type='file"></b><b>FileList</b><b>File</b><b>File</b><b>Blob</b><b>name</b><b>lastModifiedDate</b><b><script></b><b>// Выводит информацию о выбранных файлах</b><b>function fileinfo(files) {</b><b> for(var і = 0; і < files.length; і++) { // files - подобный массиву объект</b><b> var f = files[і];</b><b> console.log(f.name, // Только имя: без пути к файлу</b><b> f.size, f.type, // размер и тип - свойства Blob</b><b> f.lastModifiedDate); // еще одно свойство объекта File</b><b> }</b><b>}</b><b></script></b>Возможность выводить имена, типы и размеры файлов не представляет особого интереса. В разделах 22.6.4 и 22.6.5 будет показано, как можно использовать содержимое файла.
В дополнение к файлам, выбранным с помощью элемента
<b><input>,</b><b>dataTransfer.files</b><b>FileList</b>