JavaScript FileReader.readAsDataURL() — файл у вигляді Data URL


Метод readAsDataURL() перетворює файл на Data URL — рядок data:image/png;base64,..., який можна одразу підставити в src.

автор: NagarD

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

Головна відмінність від URL.createObjectURL(): тут файл кодується в base64 й лежить прямо в рядку. А це означає, що рядок на третину більший за сам файл.

Для прев'ю зображення це майже завжди зайве: createObjectURL() дає посилання миттєво й без роздування.

Але Data URL має свою нішу — його можна зберегти: покласти в localStorage, віддати в JSON, вбудувати в CSS. Посилання з createObjectURL() живе лише доки жива сторінка.

автор: NagarD

Нотатка

Base64 роздуває дані на ~33%. Для прев'ю великих фото це помітно — там правильніший URL.createObjectURL().

автор: NagarD

Переглядачі

Підтримка: стаціонарні переглядачі
Переглядач Google Chrome Mozilla Firefox Apple Safari Opera Microsoft EDGE Microsoft Internet Explorer
readAsDataURL 7+ 3.6+ 6+ 12.1+ 12+ 10+
Підтримка: мобільні переглядачі
Переглядач Mobile Google Android Mobile Google Chrome Mobile Mozilla Firefox Mobile Apple Safari
readAsDataURL 4.4+ yes yes 6+

Приклади

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

Data URL, який можна зберегти — на відміну від blob-посилання.

HTML

<img id="preview" width="120" alt="Прев'ю">

JS

const svg = '<svg xmlns="http://www.w3.org/2000/svg" width="120" height="60"><rect width="120" height="60" fill="#9dcb4e"/></svg>';
const file = new Blob([svg], { type: 'image/svg+xml' });

const reader = new FileReader();

reader.onload = () => {
    // рядок, який можна показати І зберегти
    document.getElementById('preview').src = reader.result;
    console.log('Довжина data:-рядка (на ~33% більша за файл):', reader.result.length);
};

reader.readAsDataURL(file);

// для простого прев'ю краще без роздування:
// preview.src = URL.createObjectURL(file);
автор: NagarD

Коментарі

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

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

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

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

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

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

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

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

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

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

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