我使用CarrierWave,我想验证文件名,只允许上传文件的扩展名是否.gif
,.png
,.jpg
,.jpeg
,或者如果没有文件扩展名。如何仅在存在文件扩展名的情况下验证文件扩展名?回复:carrierwave
有时用户上传没有扩展名的文件。例如:
http://t2.gstatic.com/images?q=tbn:ANd9GcTCD2TLvYI8a4ChgBaYK_JaRfedvXLr3HXQfj0arXXAii3o2yjf
我知道在uploaders/image_uploader.rb
取消对以下行的可能性,但我不知道的还写着“允许任何这些扩展,仅当有一个办法文件扩展名“。
# Add a white list of extensions which are allowed to be uploaded.
# For images you might use something like this:
#def extension_white_list
# %w(gif jpg jpeg png)
#end
而且,在我的模型我有一个验证如下,但由于某些原因bad-extension.bad
通行证。
validates :image, allow_blank: true, format: {
with: %r{\.(gif|jpe?g|png)\z}i,
message: 'must be a GIF, JPG, or PNG'
}, if: :filename_has_extension?
def filename_has_extension?
image =~ /\./
end