JavaScript Blob.arrayBuffer() — прочитати блоб як байти


Метод arrayBuffer() повертає проміс із сирими байтами блоба.

автор: NagarD

Загальний опис

Потрібен там, де файл треба розібрати, а не показати: перевірити сигнатуру формату, порахувати хеш, прочитати кодування, відмінне від UTF-8.

Замінює FileReader.readAsArrayBuffer() — так само, як text() замінив readAsText().

Весь файл при цьому опиняється в пам'яті. Для великих файлів (відео, архіви) краще брати stream() — там дані йдуть шматками.

автор: NagarD

Нотатка

Метод тримає весь файл у пам'яті. Гігабайтний архів так читати не варто — на це є stream().

автор: NagarD

Переглядачі

Підтримка: стаціонарні переглядачі
Переглядач Google Chrome Mozilla Firefox Apple Safari Opera Microsoft EDGE Microsoft Internet Explorer
arrayBuffer 76+ 69+ 14+ 63+ 79+ -
Підтримка: мобільні переглядачі
Переглядач Mobile Google Android Mobile Google Chrome Mobile Mozilla Firefox Mobile Apple Safari
arrayBuffer 76+ yes yes 14+

Приклади

+ запропонувати свій приклад у пісочниці

Перевірка справжнього типу файлу за сигнатурою.

(async () => {
    // файл створюємо прямо тут; у житті він з <input type="file">
    const file = new File([new Uint8Array([0x89, 0x50, 0x4e, 0x47])], 'demo.png');

    const buffer = await file.arrayBuffer();
    const bytes = new Uint8Array(buffer);

    // PNG завжди починається з цих байтів — розширення бреше, сигнатура ні
    const isPng = bytes[0] === 0x89 && bytes[1] === 0x50
        && bytes[2] === 0x4e && bytes[3] === 0x47;

    console.log('Це справді PNG:', isPng);

    // хеш файлу
    const hash = await crypto.subtle.digest('SHA-256', buffer);
    console.log('SHA-256:', hash.byteLength, 'байтів');
})();
автор: NagarD

Коментарі

Коментарів ще немає — будьте першим!

Відповідь для

Увійдіть — коментар з'явиться одразу, без капчі й очікування перевірки.

Пропозиція правки

Ваша версія — : після перевірки замінить чинну. Нова порада чи нотатка — з'явиться на сторінці після перевірки.

Ви гість — діють добові ліміти. Увійдіть, щоб пропонувати без капчі.

Ваша версія секції «»: після перевірки замінить чинну.

Ви гість — діють добові ліміти. Увійдіть, щоб пропонувати без капчі.

Ваша версія опису «»: після перевірки замінить чинну.

Ви гість — діють добові ліміти. Увійдіть, щоб пропонувати без капчі.

Зворотний зв'язок
Вхід