我正在爲我們的內部使用而設計一個消息傳遞系統,並且每條消息都可以有附件。所述附件可以是幾乎任何類型的文件,但有一些我不想允許的文件類型,例如EXE。Rails回形針通過排除內容類型驗證
而不是列出接受CONTENT_TYPES的模型的驗證,數額巨大,其是遠離現實和意願,應該被接受肯定塊的文件,我寧願只是指定應不被接受的內容類型。
谷歌搜索沒有結果,但我敢肯定別人之前遇到過這種情況,任何想法如何最好地解決這個問題?
我正在爲我們的內部使用而設計一個消息傳遞系統,並且每條消息都可以有附件。所述附件可以是幾乎任何類型的文件,但有一些我不想允許的文件類型,例如EXE。Rails回形針通過排除內容類型驗證
而不是列出接受CONTENT_TYPES的模型的驗證,數額巨大,其是遠離現實和意願,應該被接受肯定塊的文件,我寧願只是指定應不被接受的內容類型。
谷歌搜索沒有結果,但我敢肯定別人之前遇到過這種情況,任何想法如何最好地解決這個問題?
所以這是我落得這樣做:
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
我不知道這是否是做的最好的方式,但它的工作原理。如果你有更好的方式發佈你的答案!
如果內容類型那應該不被接受。
寫在model.rb
has_attached_file :record_attachment
validates_attachment_content_type :record_attachment, presence: false, :content_type => {:not => "application/zip"}
請更多信息編輯。僅限代碼和「嘗試這個」的答案是不鼓勵的,因爲它們不包含可搜索的內容,也不解釋爲什麼有人應該「嘗試這個」。 – abarisone
我更新了我的答案。 –