我想允许用户上传.jpg
文件,但前提是它们实际上是(.jpg
例如, cat.gif
重命名为不起作用。cat.jpg
目前在我的 Carrierwave 中,ImageUploader.rb
我有:
include CarrierWave::RMagick
include CarrierWave::MimeTypes
process :set_content_type
def extension_white_list
%w(jpg jpeg png)
end
在我的 Rspec 测试文件中,我以三种方式对其进行测试:
# Works
describe "with invalid mime type and invalid extension" do
before do
image.image = File.open(File.join(Rails.root, 'spec', 'support', 'image', 'images', 'executable.jpg')) # this is a .exe renamed to .jpg
end
it { image.should_not be_valid }
end
# Works
describe "with invalid mime type and invalid extension" do
before do
image.image = File.open(File.join(Rails.root, 'spec', 'support', 'image', 'images', 'test_gif.gif')) # this is a .gif
end
it { should_not be_valid }
end
# Doesn't work
describe "with invalid mime type and valid extension" do
before do
image.image = File.open(File.join(Rails.root, 'spec', 'support', 'image', 'images', 'test_gif.jpg')) # this is a .gif renamed to .jpg
end
it { image.should_not be_valid }
end
前两个测试通过,但第二个测试失败。我不知道为什么,因为我没有gif
在白名单上,我正在检查 mime 类型。
有什么建议么?
(将 gifs 转换为 jpgs 是我的备份,但我宁愿拒绝它们。)