JavaScript Blob.arrayBuffer() — прочитати блоб як байти
Метод arrayBuffer() повертає проміс із сирими байтами блоба.
Загальний опис
Потрібен там, де файл треба розібрати, а не показати: перевірити сигнатуру формату, порахувати хеш, прочитати кодування, відмінне від UTF-8.
Замінює FileReader.readAsArrayBuffer() — так само, як text() замінив readAsText().
Весь файл при цьому опиняється в пам'яті. Для великих файлів (відео, архіви) краще брати stream() — там дані йдуть шматками.
- Нотатка
-
Метод тримає весь файл у пам'яті. Гігабайтний архів так читати не варто — на це є
автор: NagarDstream().
Переглядачі
| Переглядач | ||||||
|---|---|---|---|---|---|---|
| arrayBuffer | 76+ | 69+ | 14+ | 63+ | 79+ | - |
| Переглядач | ||||
|---|---|---|---|---|
| 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, 'байтів');
})();
Коментарі
Коментарів ще немає — будьте першим!