2012-01-20 2 views
45

Я хочу ограничить браузер файлами JPG, когда я нажимаю кнопку обзора <input type="file">.Как фильтровать тип ввода = «файл» по конкретному типу файла?

Можно ли просматривать определенные типы файлов?

+1

Какую кнопку загрузки? Вход в файл HTML? Вспышка? Что-то другое? – Thilo

+0

где ваш файл? на вашем локальном компьютере или в Интернете? –

+0

Возможный ответ: http://stackoverflow.com/questions/181214/file-input-accept-attribute-is-it-useful – Matt

ответ

50

См http://www.w3schools.com/tags/att_input_accept.asp:

акцепт атрибут поддерживается во всех основных браузерах, кроме Internet Explorer и Safari. Определение и использование

Атрибут accept определяет типы файлов, которые принимает сервер (который может быть отправлен при загрузке файла).

Примечание: атрибут accept может использоваться только с <input type="file">.

Совет. Не используйте этот атрибут в качестве инструмента проверки. Загрузка файлов должна быть проверена на сервере.

Синтаксис <input accept="audio/*|video/*|image/*|MIME_type" />

Совет.. Чтобы указать более одного значения, разделите значения запятыми (например <input accept="audio/*,video/*,image/*" />

+1

Спасибо .. Но как исправить это для IE ?? –

+6

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

+0

Это делает mp4 неприемлемым в Safari. Вам также необходимо указать 'video/mp4'. –

0

Вы можете использовать атрибут принимать вместе с Это не работа в IE и Safari.

В зависимости от масштаба вашего проекта и расширяемости вы можете использовать Struts. Struts предлагает два способа ограничить тип загружаемого файла декларативно и программным LY.

Для получения дополнительной информации: http://struts.apache.org/2.0.14/docs/file-upload.html#FileUpload-FileTypes

0

Добавить пользовательский атрибут <input type="file" file-accept="jpg gif jpeg png bmp"> и читать имена файлов внутри JavaScript, который совпадает с расширением, предоставленное атрибутом file-accept. Это будет своего рода подделкой, поскольку текстовый файл с любым из вышеуказанных расширений будет ошибочно ограничен в качестве изображения.

0
<asp:FileUpload ID="FileUploadExcel" ClientIDMode="Static" runat="server" /> 
<asp:Button ID="btnUpload" ClientIDMode="Static" runat="server" Text="Upload Excel File" /> 

.

$('#btnUpload').click(function() { 
    var uploadpath = $('#FileUploadExcel').val(); 
    var fileExtension = uploadpath.substring(uploadpath.lastIndexOf(".") + 1, uploadpath.length); 

    if ($('#FileUploadExcel').val().length == 0) { 
     // write error message 
     return false; 
    } 

    if (fileExtension == "xls" || fileExtension == "xlsx") { 
     //write code for success 
    } 
    else { 
     //error code - select only excel files 
     return false; 
    } 

}); 
+0

@slavoo ~ наверняка использовать входы ASP, OP должен быть запущен ASP? Почему добавление в редактирование? Ответ UserAK47 не требует их. – Pebbl

+1

@pebbl Откройте ревизии этого сообщения и переключитесь на «бок о бок» в редакции № 2, вы можете видеть, что входы asp были здесь до моего редактирования, но не видны, потому что это не из кода. Я исправляю только формат. – slavoo

+1

@slavoo ~ ах, что имеет смысл ... иначе я бы хотел, хотя бы немного странно :) для разъяснения. – Pebbl

45

Это даст правильный (пользовательский) фильтр, когда диалог файла показывает:

<input type="file" accept=".jpg, .png, .jpeg, .gif, .bmp, .tif, .tiff|images/*"> 
Смежные вопросы