我们的用户有两种上传图片的方式。一种是通过简单的 HTML 表单,另一种是通过名为 Aurigma 的 iPhone 应用程序。我们使用 Paperclip 处理图像并将它们存储在 S3 上。使用 Aurigma 上传的图像最终会具有错误的内容类型,这会导致它们作为应用程序打开。
我尝试了两种解决方案:
before_save :set_content_type
def set_content_type
self.image.instance_write(:content_type,"image/png")
end
和:
before_post_process :set_content_type
def set_content_type
self.image.instance_write(:content_type, MIME::Types.type_for(self.image_file_name).to_s)
end
似乎这两种解决方案都被忽略了。
使用回形针 3.0.2 版,Aurigma 1.3 版,我正在从我的 iPhone 上传截图。这是我的回形针配置:
has_attached_file :image, {
:convert_options => { :all => '-auto-orient' },
:styles => {
:iphone3 => "150x150",
:web => "300x300"
},
:storage => :s3,
:bucket => ENV['S3_BUCKET'],
:s3_credentials => {
:access_key_id => ENV['S3_KEY'],
:secret_access_key => ENV['S3_SECRET']
},
:path => "/pictures/:id/:style.:extension",
:url => "/pictures/:id/:style.:extension"}
}