I’m using Paperclip 2.3.5 within a Rails app to store PDF documents on Amazon S3. For every PDF a JPG thumbnail is generated by ImageMagick. Im’ using this configuration in the model:
has_attached_file :file,
:styles => { :thumb => { :geometry => "200x200>",
:format => :jpg
} },
:whiny => false,
:storage => :s3,
:s3_credentials => "#{RAILS_ROOT}/config/s3.yml",
:s3_permissions => 'authenticated-read',
:s3_headers => { 'Expires' => 1.year.from_now.httpdate },
:url => "s3.amazonaws.com",
:path => "documents/:id/:style/:basename.:extension",
:bucket => 'mybucket'
But there is problem: The generated thumbnail is uploaded to S3 with the content_type “application/pdf”, which is WRONG, because it’s a JPG (you can see the content_type of a file on S3 with a S3 exploring tool like Cyberduck). For the original PDF file this content_type is correct, but not for the thumbnail. This causes trouble in some browsers (e.g. Chrome or Safari) which don’t show the thumbnail inline.
Beware: The content_type stored in my database (field “file_content_type”) is “application/pdf”, which is still correct, because it’s the content_type for the original file.
How can I override the content_type for a thumbnail if it should be different from the original file?
I had to overcome this, not the most elegant solution but I forked Paperclip and hold the patch in my own git repo – https://github.com/svetzal/paperclip
It is a direct replacement for Paperclip, just put in your environment.rb
gem ‘twm_paperclip’, :lib => ‘paperclip’