Rails上的ImageMagick说“图片的扩展名与其内容不匹配”

时间:2014-06-02 14:49:20

标签: ruby-on-rails heroku amazon-web-services imagemagick paperclip

我最近将我的第一个Rails应用程序部署到Heroku上,并将其配置为上传图像(通过Paperclip)到AWS S3,但我一直被这个错误消息拒绝

"Image has an extension that does not match its contents"

我认为这是我改变100%工作开发应用程序后添加的所有内容

模型/ single.rb

has_attached_file :image, :styles => { 
        :thumb => ["200x200"], 
        :medium => ["600x600>"], 
        :large => ["1200x1200>"] }, 
        :default_url => "/images/:style/missing.png"
    validates_attachment_content_type :image, :content_type => /\Aimage\/.*\Z/

配置/环境/ production.rb

config.paperclip_defaults = {
    :storage => :s3,
    :s3_credentials => {
      :bucket => ENV['S3_BUCKET_NAME'],
      :access_key_id => ENV['AWS_ACCESS_KEY_ID'],
      :secret_access_key => ENV['AWS_SECRET_ACCESS_KEY']
    }
  }

的Gemfile

gem 'paperclip'
gem 'aws-sdk'
gem 'rmagick'

我尝试了几张图片,所有图片都是我在Photoshop中使用正确的内容类型和扩展程序导出的,所以我认为错误信息不符合问题。

我刚刚开始使用Ruby / Rails / AWS / Heroku这是上周第一次因为我对主题缺乏了解而感到抱歉

1 个答案:

答案 0 :(得分:0)

尝试更改:

validates_attachment_content_type :image, 
  :content_type => /\Aimage\/.*\Z/

要:

validates_attachment_content_type :image, 
  content_type: /^image\/(jpg|jpeg|pjpeg|png|x-png|gif)/