2016-08-30 3 views
1

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

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

Googling around не дал никаких результатов, но я уверен, что кто-то еще сталкивался с этой ситуацией раньше, любая идея о том, как лучше всего это решить?

ответ

0

Так это то, что я в конечном итоге делает:

has_mongoid_attached_file :file 

do_not_validate_attachment_file_type :file 
validate :excluded_content_type 

def excluded_content_type 
    forbidden = [ 
    "application/x-msdownload", 
    "application/x-ms-installer", 
    "application/x-elf", 
    "application/x-sh", 
    "application/x-shellscript", 
    "text/x-perl", 
    "text/x-python", 
    "application/javascript" 
    ] 
    errors.add(:base, 'Executable and script files are not allowed.') if forbidden.include? file_content_type 
end 

Я не знаю, если это лучший способ сделать это, но это работает. Если у вас есть лучший способ сделать это, напишите свой ответ!

1

Если типы содержимого, которые должны не принимаются.

Написать в model.rb

has_attached_file :record_attachment  
    validates_attachment_content_type :record_attachment, presence: false, :content_type => {:not => "application/zip"} 
+0

Исправьте с дополнительной информацией. Только код и «попробуйте» ответы не приветствуются, поскольку они не содержат содержимого, доступного для поиска, и не объясняют, почему кто-то должен «попробовать это». – abarisone

+0

Я обновил свой ответ. –

Смежные вопросы