Вход/Регистрация
JavaScript. Подробное руководство, 6-е издание
вернуться

Флэнаган Дэвид

Шрифт:

out.appendChild(document.createTextNode(text));// Вывести содержимое

} // файла

reader.onerror = function(e) { // Если что-то пошло не так

console.log("Error", .e); // Вывести сообщение об ошибке

};

}

</script>

// Выберите файл для отображения:

<input type="file" onchange=”readfile(this. files[0])"x/input>

<pre id="output"x/pre>

Метод

readAsArrayBuffer
похож на метод
readAsText,
за исключением того, что требует приложить чуть больше усилий при работе с результатом, возвращая объект
ArrayBuffег
вместо строки. Пример 22.12 демонстрирует использование метода
readAsArrayBuffer
для чтения первых четырех байтов из файла в виде целого числа с прямым порядком следования байтов.

Пример 22.12. Чтение первых четырех байтов из файла

<script>

// Исследует первые 4 байта в указанном двоичном объекте. Если это "сигнатура",

// определяющая тип файла, асинхронно устанавливает свойство двоичного объекта.

function typefile(file) {

var slice = file.slice(0,4); // Читать только первые 4 байта

var reader = new FileReader; // Создать асинхронный FileReader

reader.readAsArrayBuffer(slice); // Прочитать фрагмент файла

reader.onload = function(e) {

var buffer = reader.result; // Результат - ArrayBuffer

var view = new DataView(buffer); // Получить доступ к результату

var magic = view.getUint32(0, false); // 4 байта, прямой порядок

switch(magic) { // Определить по ним тип файла

case 0х89504Е47: file.verified_type = "image/png"; break;

case 0x47494638: file.verified_type = "image/gif"; break;

case 0x25504446: file.verified_type = "application/pdf"; break;

case 0x504b0304: file.verified_type = "application/zip"; break;

}

console.log(file.name, file.verified_type);

};

}

</script>

<input type="file" onchange="typefile(this. files[0])”></input>

В фоновых потоках выполнения вместо объекта

FileReader
можно использовать объект
FileReaderSync
. Синхронный прикладной интерфейс определяет те же методы
readAsText
и
readAsArrayBuffer,
которые принимают те же аргументы, что и их асинхронные версии. Разница заключается лишь в том, что синхронные методы блокируются до окончания операции и непосредственно возвращают результат в вид строки или объекта
ArrayBuffer
, что избавляет от необходимости использовать обработчики событий. Пример 22.14 ниже демонстрирует использование объекта
FileReaderSync
.

22.7. Прикладной интерфейс к файловой системе

В разделе 22.6.5 вы познакомились с классом

FileReader
, использовавшимся для чтения содержимого файлов, выбираемых пользователем, или любых двоичных объектов. Типы
File
и
Blob
определяются проектом спецификации, известной как «File АРІ». Проект другой спецификации, еще более новой, чем «File АРІ», дает веб-приложениям управляемый доступ к частной файловой системе, где они могут писать в файлы, читать файлы, создавать каталоги, читать содержимое каталогов и т. д. На момент написания этих строк данный прикладной интерфейс к файловой системе был реализован только в броузере Google Chrome. Это мощная и важная форма локального хранилища, поэтому она будет описана здесь, несмотря на то что ее прикладной интерфейс еще менее стабилен, чем другие прикладные интерфейсы, описываемые в этой главе. Данный раздел охватывает лишь основные задачи, выполняемые с файловой системой, и не демонстрирует всех возможностей прикладного интерфейса. Так как обсуждаемый здесь прикладной интерфейс является новым и нестабильным, он не описывается в справочном разделе этой книги.

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

// Метод синхронного получения файловой системы. Принимает параметры,

// определяющие срок существования файловой системы и ее размер.

  • Читать дальше
  • 1
  • ...
  • 455
  • 456
  • 457
  • 458
  • 459
  • 460
  • 461
  • 462
  • 463
  • 464
  • 465
  • ...

Ебукер (ebooker) – онлайн-библиотека на русском языке. Книги доступны онлайн, без утомительной регистрации. Огромный выбор и удобный дизайн, позволяющий читать без проблем. Добавляйте сайт в закладки! Все произведения загружаются пользователями: если считаете, что ваши авторские права нарушены – используйте форму обратной связи.

Полезные ссылки

  • Моя полка

Контакты

  • chitat.ebooker@gmail.com

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