JS и type.match как тип файла mime - нужен совет - PullRequest
7 голосов
/ 13 сентября 2011

Сегодня я столкнулся с интересной вещью, как FF File API и отдельными файлами по их типам.Хорошо, вот небольшой фрагмент, так как

if (!input.files[0].type.match('image.*')) {
            window.alert("Select image please");
            return;
        }

он контролирует только изображение для чтения.Но как насчет файлов doc и pdf, например?Я не смог найти полезных примеров для этой вещи, поэтому я надеюсь, что вы можете поделиться некоторыми фрагментами.Меня интересует обнаружение разных типов файлов, но как я могу управлять разными типами файлов с помощью JS и его привязки type.match?

Здесь - это базовый код

Любой полезный комментарий приветствуется:)

Ответы [ 2 ]

17 голосов
/ 14 сентября 2011

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

Как указано в w3 , атрибут type объекта File имеет тип MIME. Это определено в RFC 2046 . Но сама спецификация - не самая интересная часть, более интересным является список существующего типа MIME здесь или наиболее используемого здесь .

В этом коде они используют атрибут type и выполняют для него регулярное выражение (см. match и RegExp для получения дополнительной информации). Их регулярное выражение говорит, что все в порядке, если тип содержит image.

Чтобы сделать свой собственный селектор, вам нужно объединить все вышеперечисленное. (некоторые из примеров используют === вместо match, потому что тип mime - это весь тип) Например, возможна следующая проверка:

  • документ (не только pdf, например, этот тип также может иметь тип): input.files[0].type==='application/pdf'
  • аудио: input.files[0].type.match('audio.*')
  • видео: input.files[0].type.match('video.*')

и т. Д.

После этого вы можете использовать селектор для атрибута name файла, если вы хотите соответствовать только определенному расширению (например, для проверки между различными типами документов, вы можете посмотреть, является ли это .pdf, .odt ...) используя, например, input.files[0].name.match('\.pdf'). Но имхо это не советуется, так как пользователь может легко поиграть с этим (удалив или изменив их).

0 голосов
/ 20 февраля 2018

Это может помочь:

file.mimetype.match('text.*|image.*|application.*')

Проверяет все допустимые типы пантомимы

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...