0Pricing
React Academy · Урок

Поле выбора файла и чтение данных файла

Работайте с , читайте метаданные файлов и предварительно просматривайте изображения с помощью FileReader

«Поле выбора файла и чтение данных файла» — бесплатный урок React Academy на CoddyKit. Это урок 2 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения React Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс React Academy содержит 4 уроков всего.

Добро пожаловать

В этом уроке вы будете работать с полями выбора файлов в React, читать метаданные файлов, предварительно просматривать выбранные изображения и использовать API FileReader для обработки содержимого файлов.

Элемент выбора файла

Элемент `` нельзя управляемо использовать через проп value в React — он всегда остаётся неуправляемым. Считывайте выбранный файл из `e.target.files[0]` в обработчике onChange.
function FileInput() {
  const handleChange = (e) => {
    const file = e.target.files[0];
    console.log(file.name, file.size, file.type);
  };
  return <input type="file" onChange={handleChange} />;
}

Свойства объекта файла

Объект файла расширяет Blob и имеет следующие свойства: `name` (имя файла), `size` (размер в байтах), `type` (тип MIME, например 'image/png') и `lastModified` (время последнего изменения). Считывайте их до загрузки или обработки файла.

Разрешение определённых типов файлов

Используйте атрибут `accept`, чтобы подсказать браузеру, какие типы файлов показывать. Объединяйте типы MIME и расширения. Всегда выполняйте проверку также на сервере.
<input type="file" accept="image/png,image/jpeg,.pdf" />

Выбор нескольких файлов

Добавьте атрибут `multiple`, чтобы разрешить выбор нескольких файлов. `e.target.files` возвращает FileList — преобразуйте его в массив с помощью `Array.from()`, чтобы использовать методы массивов.
<input type="file" multiple />

const files = Array.from(e.target.files);

Предварительный просмотр изображения с помощью URL.createObjectURL

Создайте временный URL для предварительного просмотра выбранного файла изображения с помощью `URL.createObjectURL(file)`. Не забудьте освободить его с помощью `URL.revokeObjectURL`, когда он больше не нужен, чтобы освободить память.
const [preview, setPreview] = useState(null);

const handleChange = (e) => {
  const file = e.target.files[0];
  if (file) setPreview(URL.createObjectURL(file));
};

useEffect(() => {
  return () => { if (preview) URL.revokeObjectURL(preview); };
}, [preview]);

{preview && <img src={preview} alt="Preview" />}

Чтение содержимого файла с помощью FileReader

Используйте API `FileReader`, чтобы прочитать содержимое файла как текст или URL данных. Вызывайте `reader.readAsText(file)` для текстовых файлов или `reader.readAsDataURL(file)` для двоичных файлов, например изображений.
const reader = new FileReader();
reader.onload = (e) => setContent(e.target.result);
reader.readAsText(file);

Проверка размера файла

Проверяйте размер файла на стороне клиента до загрузки. Отклоняйте файлы, размер которых превышает порог, и отображайте сообщение об ошибке.
const MAX_SIZE = 5 * 1024 * 1024; // 5 MB
if (file.size > MAX_SIZE) {
  setError('File must be under 5 MB');
  return;
}

Очистка поля выбора файла

Нельзя очистить поле выбора файла, задав его значение: оно доступно только для чтения. Вместо этого сбросьте его императивно через ссылку или измените проп `key` поля ввода, чтобы заставить React смонтировать его заново.
const inputRef = useRef();
const clear = () => { inputRef.current.value = ''; };
<input ref={inputRef} type="file" />

Хранение ссылок на файлы в состоянии

Храните сам объект файла в состоянии, а не только его имя или URL. Это позволит загрузить файл позже, не считывая его повторно из DOM.
const [file, setFile] = useState(null);
const handleChange = (e) => setFile(e.target.files[0] || null);

Быстрая проверка

Какой метод создаёт временный URL для предварительного просмотра выбранного файла изображения в браузере?

Итоги

Считывайте выбранные файлы из e.target.files. Используйте URL.createObjectURL для предварительного просмотра, FileReader — для чтения содержимого, проверяйте размер на стороне клиента и храните объект File в состоянии для последующей загрузки.

Далее

Следующий урок: **Интерфейс загрузки файлов методом перетаскивания** — вы создадите область перетаскивания с визуальной обратной связью, используя события React.

Часто задаваемые вопросы

Урок «Поле выбора файла и чтение данных файла» бесплатный?

Да — полный текст урока «Поле выбора файла и чтение данных файла» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс React Academy, подпишись на CoddyKit PRO. Курс React Academy содержит 4 уроков всего.

Чему я научусь в уроке «Поле выбора файла и чтение данных файла»?

Работайте с , читайте метаданные файлов и предварительно просматривайте изображения с помощью FileReader Ты практикуешь React Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать React Academy?

Предыдущий опыт не требуется. React Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 2 из 4.

Сколько времени занимает урок «Поле выбора файла и чтение данных файла»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке React Academy?

Да. Каждый урок React Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. Неконтролируемые поля ввода с useRef
  2. Поле выбора файла и чтение данных файла
  3. Интерфейс загрузки файлов перетаскиванием
  4. Загрузка файлов в серверный API
← Назад к React Academy