На что способен FileList API в JavaScript и как его использовать.

FileList API дает вам полный контроль над выбранным пользователем файлом, и с его помощью вы можете выполнять проверку файла.

Я покажу вам некоторые вещи, которые вы можете проверить в файле с помощью API FileList.

Предположим, у меня есть ввод файла ниже:

Когда я перезагружаю свою HTML-страницу и выбираю некоторые изображения, именно так я извлекаю выбранные файлы как объект.

Вот превью:

Вы можете видеть, что FileList — это объект, внутри которого есть другие свойства.

В объекте FileList:

  • Вы можете получить количество файлов, выбранных пользователем, через свойство length.
  • Вы можете получить больше информации о выбранном файле, используя числовой индекс 0...(length - 1)

На изображении выше видно, что длина равна 6, а это означает, что пользователь выбрал 6 файлов. Таким образом, файлы будут иметь индекс от 0 до (6–1), т.е. от 0 до 5.

Это полезно, если вы хотите просмотреть каждый из файлов, выбранных пользователем.

Свойства объекта API FileList

Теперь поговорим подробнее о свойствах, содержащихся в выбранном файле.

  • последнее изменение timestamp

Это дата последней модификации файла, представленная в виде метки времени.

Чтобы управлять датой, передайте отметку времени конструктору Date.

  • lastModifiedDate Date

Это полная дата последнего изменения файла.

  • имя string

Это имя файла.

  • размер integer

Это размер файла в байтах.

  • введите string

Это MIME-тип файла.

Напомним, вот изображение, показывающее свойства FileList API:

Перебор файлов

Теперь давайте узнаем, как мы можем просмотреть каждый из файлов, выбранных пользователем, и выполнить их проверку.

API FileList предоставляет данные в виде объекта, поэтому нам нужно написать цикл, который будет проходить через этот объект и извлекать нужные нам данные.

Если вы не читали мою предыдущую статью о том, как зациклить объект в JavaScript, вот ссылка на статью.

Когда вы выполните приведенный выше код, вы увидите, что мы можем перебирать объект и выводить каждый из файлов.

Теперь мы готовы проверить файлы.

Проверка

Проверка размера

Напомним, что размер конкретного файла возвращается как bytes.

Предполагая, что пользователю разрешено выбирать файлы размером не более 2 МБ, я выполню проверку именно так.

  • Преобразование 2 МБ в байты.
  • Прокручивайте файлы и сохраняйте их размеры.
  • Проверьте, не превышает ли общий размер 2 МБ.

Проверка типа

Теперь, предполагая, что пользователю разрешено выбирать только файлы изображений, я буду выполнять проверки именно так.

  • Создайте массив, в котором будут храниться типы файлов изображений.
  • Прокрутите файлы и проверьте, не соответствует ли какой-либо файл требуемому типу.

Вот что происходит, когда я выбираю некоторые файлы, которые не поддерживаются.

Проверка расширений файлов

Для моей последней проверки я хочу, чтобы пользователь предоставил файлы с расширением «.png, .jpg, .jpeg», и любой файл, который не соответствует расширению, будет помечен как неподдерживаемый тип файла.

Чтобы выполнить эту проверку, я буду:

  • Сохраните необходимые расширения файлов в массиве.
  • Прокрутите файлы и получите их имена.
  • Извлеките расширение файла из имени, а затем сравните его с требуемыми расширениями файлов.

Вот что происходит, когда я выбираю файлы, которые не поддерживаются:

Я надеюсь, что благодаря тому небольшому упражнению, которое мы здесь сделали, вы сможете полностью понять, на что способен FileList API в JavaScript, в том числе как его использовать.

Я хотел бы получить ваш вклад в эту статью.

Дополнительный

Я создал и запустил библиотеку JavaScript на NPM, которая способна проверять ваши внешние формы с использованием регулярных выражений, правил проверки и входных атрибутов формы.

С помощью этой библиотеки вы можете проверять все типы ввода формы, включая проверку файлов и проверку длины.

  • Проверьте эту библиотеку на NPM:


  • Проверьте эту библиотеку на GitHub:


  • Ознакомьтесь с документацией:


Спасибо.

Дополнительные материалы на PlainEnglish.io. Подпишитесь на нашу бесплатную еженедельную рассылку новостей. Подпишитесь на нас в Twitter и LinkedIn. Посетите наш Community Discord и присоединитесь к нашему Коллективу талантов.