我使用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