ユーザーが.jpg
ファイルをアップロードできるようにしたいのですが、実際にそうである場合に限ります.jpg
(たとえば、 cat.gif
名前を変更した場合は機能しcat.jpg
ません。
現在、CarrierwaveImageUploader.rb
には次のものがあります。
include CarrierWave::RMagick
include CarrierWave::MimeTypes
process :set_content_type
def extension_white_list
%w(jpg jpeg png)
end
Rspec テスト ファイルでは、次の 3 つの方法でテストします。
# 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
最初の 2 つのテストは成功しますが、2 番目のテストは失敗します。gif
ホワイトリストに登録しておらず、MIME タイプをチェックしているため、理由はわかりません。
助言がありますか?
(gif を jpg に変換することは私のバックアップですが、むしろ拒否したいと思います。)