Разрешить загружать только PDF-файлы - PullRequest
0 голосов
/ 25 мая 2009

Как изменить этот бит кода, чтобы разрешить загрузку только pdf-файлов:

unless @file.content_type =~ /^image/
  errors.add(:file, "is not a recognized format")
  return false
end

Ответы [ 3 ]

3 голосов
/ 25 мая 2009

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

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

2 голосов
/ 25 мая 2009

Вам нужно будет:

  1. Принять загрузку;
  2. Попробуйте открыть PDF-файл в какой-нибудь библиотеке;
  3. Отклонить файл, если вы не можете его открыть.

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

2 голосов
/ 25 мая 2009

Не использовал это, но тип mime pdf - application / pdf, поэтому он должен быть просто:

unless @file.content_type =~ /^application\/pdf$/
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...