我最近将我的第一个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这是上周第一次因为我对主题缺乏了解而感到抱歉
答案 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)/