Есть ли способ добавить в черный список расширения в Paperclip? - PullRequest
1 голос
/ 26 июля 2011

У меня есть приложение, которое должно принимать почти всех типов файлов, кроме тех, которые известны как вредоносные (например, exe, dll, bat и т. Д.) Я использую Paperclip и мне интересно, есть ли способ сделать это. После коммита на github https://github.com/thoughtbot/paperclip/commit/020625921adae884534608d76c11f65692e4bbec, похоже, что это возможно. Но я не уверен.

ОБНОВЛЕНИЕ: Я не смог найти способ сделать что-то из скрепки, однако я добавил эту пользовательскую проверку:

  def extension_not_blacklisted?
 #An attempt to make a blacklist command when saving...
 forbiden_types = Array.new()
 forbiden_types << "jpg" << "exe" <<"dll" 
 path_array = attachment.to_s.split(".")
 extension = path_array.pop
 extension_with_extras = extension.to_s.split("?")
 extension = extension_with_extras[0]

forbiden_types.each do |f|
  if f == extension
  errors.add(:attachment,'FORBIDEN FILE EXTENSION: ' + extension)
  end
end

Ответы [ 3 ]

1 голос
/ 27 июля 2011

Ваш пользовательский метод проверки, вероятно, единственный способ.По крайней мере, на данный момент Paperclip может проверять только типы контента, например:

validates_attachment_content_type :attachment, :content_type => ['image/png', 'application/pdf'], :message => 'should be a valid type'

, и он проверяет включение, а не исключение.

0 голосов
/ 07 октября 2015

Вы можете использовать регулярное выражение, которое использует отрицательный взгляд:

validates_attachment_content_type :attachment, :content_type => /\/(?!(php|pl|exe|pm|cfm|asp)$)/
0 голосов
/ 26 июля 2011

Используйте фильтр before_post_process и верните false, если расширение находится в вашем черном списке - возвращение false предотвратит выполнение остальной цепочки обработки.при проверке правильного размера файла.

https://github.com/thoughtbot/paperclip/wiki/Thumbnail-Generation

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...