Подтвердить что ты не робот

Как получить элемент ввода HTML типа "файл", чтобы принимать только файлы PDF?

есть ли какой-либо файл html файла

<input name="file1" type="file" style="width:300px">

принимают только файлы PDF и когда просматривают только его файлы PDF...

Спасибо

4b9b3361

Ответ 1

Чтобы получить элемент формы HTML file только для приема PDF файлов, вы можете использовать атрибут accept в современных браузерах, таких как Firefox 9+, Chrome 16+, Opera 11+ и IE10 +, например:

<input name="file1" type="file" accept="application/pdf" />

Вы можете объединить несколько типов mime с запятой.

Следующая строка будет содержать файлы JPG, PNG, GIF, PDF и EPS:

<input name="foo" type="file" accept="image/jpeg,image/gif,image/png,application/pdf,image/x-eps" />

В старых браузерах не удается ограничить собственный файл файла ОС - вам придется использовать Flash или апплет Java или что-то подобное для обработки передачи файлов.

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

Небольшое обновление - с помощью javascript и FileReader API вы можете сделать большую проверку на стороне клиента перед загрузкой огромных файлов на ваш сервер и проверяя их снова.

Ответ 3

Невозможно сделать это, кроме проверки расширения файла с помощью JavaScript, когда путь ввода заполняется файловым сборщиком. Чтобы реализовать что-либо более интересное, вам нужно написать свой собственный компонент для любого браузера, который вы хотите (activeX или XUL).

В HTML4.01 присутствует атрибут "accept", но я не знаю ни одного поддерживающего его браузера. accept="image/gif,image/jpeg - так что это аккуратная, но непрактичная спецификация

Ответ 5

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

Ответ 6

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

Ответ 7

Предыдущие плакаты сделали небольшую ошибку. Атрибут accept - это только фильтр отображения. Он не будет проверять вашу запись перед отправкой.

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

Итак, чтобы ответить на исходный плакат, NO. Вы не можете ограничить входной файл одним определенным расширением с помощью HTML.

Но вы можете использовать javascript для проверки имени файла, который был выбран, непосредственно перед отправкой. Просто вставьте атрибут onclick в кнопку отправки и вызовите код, который будет проверять значение входного файла. Если расширение запрещено, вам нужно будет вернуть false, чтобы аннулировать форму. Вы можете даже использовать пользовательский валидатор jQuery и т.д., Чтобы проверить форму.

Наконец, вам также придется протестировать расширение на стороне сервера. Та же проблема о максимальном разрешенном размере файла.