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

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

  validates :doc_type, :allow_blank => true, :format => {:with => /\A.*\.(pdf|PDF)\z/, :message => 'must be PDF file.'}

а также

validates_attachment_content_type :doc_type, :content_type => { :content_type => "application/pdf" }

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

Существует ли способ отобразить ошибку проверки при проверке на стороне клиента?


person user984621    schedule 22.04.2012    source источник


Ответы (1)


Я предлагаю сначала использовать плагин проверки jquery на стороне клиента, прежде чем отправлять его на сервер. Это позволяет вам проверять типы файлов во внешнем интерфейсе.

http://docs.jquery.com/Plugins/Validation/Methods/accept

Вот пример, который делает «поле» обязательным и заканчивается на «.xls» или «.csv».

$("#myform").validate({
  rules: {
    field: {
      required: true,
      accept: "xls|csv"
    }
  }
});

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

person botbot    schedule 23.04.2012
comment
спасибо @botbot - не могли бы вы узнать, как легко добавить еще одну проверку размера файла? - person BKSpurgeon; 25.03.2019