Чтение онлайн

на главную - закладки

Жанры

JavaScript. Подробное руководство, 6-е издание
Шрифт:

f.lastModifiedDate); // еще одно свойство объекта File

}

}

</script>

Возможность выводить имена, типы и размеры файлов не представляет особого интереса. В разделах 22.6.4 и 22.6.5 будет показано, как можно использовать содержимое файла.

В дополнение к файлам, выбранным с помощью элемента

<input>,
пользователь может также дать сценарию доступ к локальным файлам, буксируя их мышью
и сбрасывая в окно броузера. Когда приложение получает событие «drop», свойство
dataTransfer.files
объекта события будет содержать ссылку на объект
FileList
, связанный с этой операцией буксировки, если в ней участвовали файлы. Прикладной интерфейс буксировки объектов мышью рассматривался в разделе 17.7, а подобное использование файлов демонстрируется в примере 22.10.

22.6.2. Загрузка двоичных объектов

Глава 18 охватывает тему выполнения HTTP-запросов с помощью объекта

XMLHttpRequest
и также описывает некоторые новые возможности, определяемые проектом спецификации «XMLHttpRequest Level 2» (XHR2). На момент написания этих строк спецификация XHR2 определяла способ загрузки содержимого URL-адреса в виде двоичного объекта, но реализации броузеров пока не поддерживали его. Поскольку программный код не может быть протестирован, этот раздел является лишь схематическим описанием прикладного интерфейса, предусматриваемого спецификацией XHR2 для работы с двоичными объектами.

Пример 22.9 демонстрирует простой способ загрузки двоичного объекта из Веб. Сравните его с примером 18.2, который загружает содержимое URL-адреса как простой текст.

Пример 22.9, Загрузка двоичного объекта с помощью объекта

XMLHttpRequest

// Запрашивает методом GET содержимое URL в виде двоичного объекта и передает его

// указанной функции обратного вызова. Этот программный код не тестировался: на тот

// момент, когда он был написан, броузеры еще не поддерживали этот прикладной интерфейс,

function getBlob(url, callback) {

var xhr = new XMLHttpRequest; // Создать новый объект XHR

xhr.open("GET", url); // Указать URL-адрес

xhr.responseType = "blob" // Желательно получить двоичный объект

xhr.onload = function { // onload проще, чем onreadystatechange

callback(xhr.response): // Передать ответ функции обратного вызова

} // Отметьте: .response, а не .responseText

xhr.send(null); // Послать запрос

}

Если загружаемый двоичный объект слишком велик и вам хотелось бы начать его обработку уже в процессе загрузки, можно задействовать обработчик события

onprogress
в комплексе с приемами чтения двоичных объектов, которые демонстрируются в разделе 22.6.5.

22.6.3. Конструирование двоичных объектов

Двоичные объекты часто представляют фрагменты данных из

внешних ресурсов, таких как локальные файлы, URL-адреса или базы данных. Но иногда вебприложению требуется создать собственный двоичный объект, чтобы выгрузить его на веб-сервер, сохранить в файле или в базе данных, или передать его фоновому потоку выполнения. Создать объект
Blob
из имеющихся данных можно с помощью объекта
BlobBuilder
:

// Создать новый объект BlobBuilder

var bb = new BlobBuilder;

// Добавить в двоичный объект строку и отметить ее конец символом NUL

bb.append("Данный двоичный объект содержит этот текст и 10 ” +

"32-битных целых чисел с прямым порядком следования байтов.");

bb.append("\0"); // Добавить символ NUL, чтобы отметить конец строки

// Сохранить некоторые данные в объекте ArrayBuffer

var ab = new ArrayBuffer(4*10);

var dv = new DataView(ab);

for(var і = 0: і < 10; i++) dv.setlnt32(i*4,i);

// Добавить ArrayBuffer в двоичный объект

bb.append(ab);

// Теперь извлечь полученный двоичный объект, указав искусственный М1МЕ-тип

var blob = bb.getBlob("x-optional/mime-type-here");

В начале этого раздела мы узнали, что двоичные объекты имеют метод

slice,
который разбивает их на фрагменты. Точно так же имеется возможность объединять двоичные объекты, передавая их методу
append
объекта
BlobBuilder
.

22.6.4. URL-адреса, ссылающиеся на двоичные объекты

В предыдущих разделах было показано, как можно получить или создать двоичный объект. Теперь мы поговорим о том, что можно делать с полученными или созданными двоичными объектами. Самое простое, что можно сделать с двоичным объектом, - это создать URL-адрес, ссылающийся на него. Такой URL-адрес можно использовать везде, где используются обычные URL-адреса: в элементах DOM, в таблицах стилей и даже при работе с объектом

XMLHttpRequest
.

Создаются URL-адреса, ссылающиеся на двоичные объекты, с помощью функции

createObjectURL.
На момент написания этих строк проект спецификации и Firefox 4 помещали эту функцию в глобальный объект URL, а броузер Chrome и библиотека Webkit добавляли свой префикс к имени этого объекта, называя его webkitURL. Ранние версии спецификации (и ранние реализации броузеров) помещали эту функцию непосредственно в объект
Window
. Чтобы получить возможность переносимым образом создавать URL-адреса, ссылающиеся на двоичные объекты, можно определить вспомогательную функцию, как показано ниже:

Поделиться:
Популярные книги

Святая и греховная машина любви

Мердок Айрис
Проза:
современная проза
7.33
рейтинг книги
Святая и греховная машина любви

Сказка о глупом Галилее (сборник)

Войнович Владимир Николаевич
Проза:
современная проза
5.00
рейтинг книги
Сказка о глупом Галилее (сборник)

Избрание сочинения в трех томах. Том второй

Кочетов Всеволод Анисимович
Проза:
советская классическая проза
5.00
рейтинг книги
Избрание сочинения в трех томах. Том второй

Одиссея самурая, Командир японского эсминца

Хара Тамеичи
Документальная литература:
биографии и мемуары
5.00
рейтинг книги
Одиссея самурая, Командир японского эсминца

Эпоха Опустошителя. Том II

Павлов Вел
2. Вечное Ристалище
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Эпоха Опустошителя. Том II

Ваше Сиятельство 3

Моури Эрли
3. Ваше Сиятельство
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Ваше Сиятельство 3

На плахе Таганки

Золотухин Валерий Сергеевич
Документальная литература:
биографии и мемуары
6.80
рейтинг книги
На плахе Таганки

Возлюби болезнь свою

Синельников Валерий Владимирович
Научно-образовательная:
психология
7.71
рейтинг книги
Возлюби болезнь свою

Дневники

Эфрон Георгий
5.00
рейтинг книги
Дневники

Человеческое познание его сферы и границы

Рассел Бертран Артур Уильям
Научно-образовательная:
философия
6.25
рейтинг книги
Человеческое познание его сферы и границы

Представь себе… Беседы о деньгах, политике и жизни вообще

Гьямцхо? Нгагва?нг Ловза?нг Тэнцзи?н
Религия и эзотерика:
самосовершенствование
5.00
рейтинг книги
Представь себе… Беседы о деньгах, политике и жизни вообще

Молот Пограничья. Гексалогия

Пылаев Валерий
Молот Пограничья
Фантастика:
аниме
фэнтези
фантастика: прочее
попаданцы
5.25
рейтинг книги
Молот Пограничья. Гексалогия

Законы Рода. Том 6

Мельник Андрей
6. Граф Берестьев
Фантастика:
юмористическое фэнтези
аниме
5.00
рейтинг книги
Законы Рода. Том 6

Том 5. Книга 1. Автобиографическая проза. Статьи

Цветаева Марина Ивановна
5. Собрание сочинений в семи томах
Документальная литература:
публицистика
5.00
рейтинг книги
Том 5. Книга 1. Автобиографическая проза. Статьи