0

私のモデルは次のようになります。

class Art < ActiveRecord::Base
  attr_accessible :image
  has_attached_file :image, :styles => { :medium => "620x620>", :thumb => "200x200>" }
  validates_attachment :image, :content_type =>  { :content_type => "image/png" }
end

検証して、PNG ファイル png_file.png のアップロードを許可しますが、JPG ファイル jpg_file.jpg のアップロードは許可しません。

しかし、PNG ファイルの名前を png_file.jpg に変更すると、画像をアップロードできなくなります。また、JPG ファイルの名前を jpg_file.png に変更すると、誤ってファイルのアップロードに成功します。

ファイル拡張子ではなく、実際の内容でアップロードされたファイルを検証する方法を知りたいです。誰もこの問題を解決する方法を知っていますか?

4

1 に答える 1

2

ファイルを未加工のバイナリで読み取り、PNG タイプかどうかを確認できます。

File.open('path-to-your-file', 'rb').read(9).include?('PNG')

file9のマジックナンバーです。

于 2013-11-14T01:18:35.017 に答える