JavaScript File — файл, вибраний користувачем


File — файл, вибраний користувачем через <input type="file"> або перетягнутий у вікно. Це Blob із додатковими даними: іменем і датою зміни.

автор: NagarD

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

Отримати файли можна з input.files — це FileList, схожий на масив (перетворюється спредом).

Головне, що дає File до відправки на сервер: name, size і type. Тобто можна чесно сказати «файл завеликий» чи «це не зображення», не ганяючи 20 мегабайтів у мережу даремно.

Щоб прочитати вміст, потрібен FileReader або сучасніші методи самого блоба: await file.text() і await file.arrayBuffer().

автор: NagarD

Нотатка

Шляху до файлу на диску браузер не дає — і не дасть. Доступні лише ім'я й вміст: це межа пісочниці, а не недогляд.

автор: NagarD

Синтаксис

const file = input.files[0];

властивості

Властивість Опис
name Ім'я файлу.
size Розмір у байтах.
type Тип MIME.
lastModified Час останньої зміни (unix, мс).

Переглядачі

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

Приклади

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

Перевірка розміру й типу до відправки та миттєве прев'ю.

HTML

<input type="file" id="upload" accept="image/*">
<img id="preview" alt="">

JS

const input = document.getElementById('upload');

input.addEventListener('change', () => {
    const file = input.files[0];

    if (!file) {
        return;
    }

    console.log(file.name, file.size, file.type);

    // відсікаємо до відправки, а не після 20 МБ у мережі
    if (file.size > 5 * 1024 * 1024) {
        alert('Файл більший за 5 МБ');
        return;
    }

    // миттєве прев'ю без сервера
    document.getElementById('preview').src = URL.createObjectURL(file);
});
автор: NagarD

Коментарі

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

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

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

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

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

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

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

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

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

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

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