Показать пользовательский текст для примененных фильтров типов файлов в диалоге файлов, чтобы загрузить определенную категорию файлов

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

<input id="file" type="file" name="file" size="30" 
       accept="image/jpg,image/png,image/jpeg,image/gif"
/>

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

filedialogbottom

Мой вопрос: есть ли лучший способ изменить текст "Пользовательские файлы" на "Файлы изображений"

Примечание. Если я предоставлю "image/*", которое будет отображать "Файлы изображений" в описании файла, но я НЕ ХОЧУ ПОЗВОЛИТЬ пользователю выбирать ВСЕ типы файлов изображений, я просто хочу ограничиться указанными форматами.

Спасибо за ваше мнение заранее.

1 ответ

Решение

Краткий ответ

Как я и ожидал, оказывается, что это невозможно. <input type="file" /> является одним из наиболее защищенных элементов браузера и, следовательно, наименее адаптируемых элементов браузера. Причина, по которой браузеры обрабатывают ввод файлов с такой тщательностью, заключается в том, что они не хотят рисковать тем, что злоумышленники получат доступ к вашим файлам (даже если ваша структура папок будет плохой).

Длинный ответ

Возможно, вы не сможете свободно изменять текст, видимый в окне фильтра, но есть надежда. На самом деле, в некоторых ситуациях можно выбрать вид текста, который появляется. Один большой недостаток заключается в том, что он полностью не совместим с браузером и, вероятно, не совместим с ОС.

Существует также еще одна причина, по которой браузерам может быть неуместно разрешать редактирование этого текста, его можно использовать для введения пользователей в заблуждение (например, такой текст, как We're watching you или же FATAL WINDOWS ERROR может напугать пользователей). Более того, это не должно, но может привести к возможным эксплойтам, когда пользователи пытаются запустить какой-то код C в полевых условиях, предоставляя им доступ к компьютеру, что может нанести вред вашему компьютеру катастрофическим образом.

Выше я говорил, что можно несколько изменить видимый фильтр-текст. Ниже я расскажу о некоторых вещах, которые попробовал, но не стесняйтесь попробовать это самостоятельно на этом коде, который я создал для целей тестирования: https://codepen.io/JohannesB/pen/vKGoyE

Возможное вдохновение для других типов файлов, которые я не тестировал (не стесняйтесь редактировать этот пост): /questions/34639064/atribut-vvoda-fajla-prinyat-eto-polezno/34639072#34639072

Выбор параметров принятия файла, которые, я считаю, могут дать интересные результаты: application / msword, application / rtf, application / octet-stream, application / octet-stream exe, application / zip, text / css, text / html, text / plain

Известные выводы

  • Все три браузера отличаются по типам файлов, связанных с image/*, video/* а также audio/*
  • Internet Explorer - единственный браузер, который понимает Video/x-msvideo avi
  • Firefox и Chrome понимают Aplication/pdf с пользовательским фильтром текста, но IE не делает.
  • Chrome - единственный браузер, который понимает Text/* и это имеет собственную текстовую подпись для .exe
  • Заголовки пользовательских фильтров никогда не применяются для комбинированных вводов, абсолютно ни в одном браузере.

Путь не исследован

Вполне возможно, что для flash-загрузчиков этот текст можно настраивать, но я в этом сильно сомневаюсь. Кроме того, flash устарела, так что, на мой взгляд, попробовать не стоит.


Результаты эксперимента

Отказ от ответственности: приведенные ниже примеры были запущены на компьютере с Windows 7 с использованием Internet Explorer v11.0.9600, Chrome v51.0.2704.84m и Firefox v46.0.1. Я не могу гарантировать, что они представляют правильную информацию в других операционных системах, других версиях браузера или даже в тех же версиях браузера. Используйте эту информацию с осторожностью.


Интернет проводник

Аудио /*

IE Audio

Заявка/*

IE Application

Применение / PDF

Приложение IE / pdf

Образ/*

IE Image

Текст/*

IE Text

Видео/*

IE Video

Видео / x-msvideo avi

IE Video / x-msvideo avi

.EXE

IE.exe

Изображение /*, Видео /*

IE Image /*, Видео

Изображение /*, .exe

IE Image /*, .exe


Хром

Аудио /*

Chrome Audio

Заявка/*

Приложение Chrome

Применение / PDF

Приложение Chrome / pdf

Образ/*

Chrome Image

Текст/*

Chrome Text

Видео/*

Chrome Video

Видео / x-msvideo avi

Chrome Video / x-msvideo avi

.EXE

Chrome.exe

Изображение /*, Видео /*

Chrome Image /*, Видео

Изображение /*, .exe

Chrome Image /*, .exe


Mozilla Firefox

Аудио /*

Mozilla Firefox Audio

Заявка/*

Приложение Mozilla Firefox

Применение / PDF

Приложение Mozilla Firefox / pdf

Образ/*

Mozilla Firefox Image

Текст/*

Mozilla Firefox Text

Видео/*

Mozilla Firefox Video

Видео / x-msvideo avi

Mozilla Firefox Video / x-msvideo avi

.EXE

Mozilla Firefox.exe

Изображение /*, Видео /*

Mozilla Firefox Image /*, Видео

Изображение /*, .exe

Mozilla Firefox Image /*, .exe

Другие вопросы по тегам