Paperclip validation issue on production

3.7k views Asked by At

I have a Problem when I deploy my application on google cloud I get this error

has contents that are not what they are reported to be

Locally it works fine! I already tried to using the command_path. So I really don't know what I have to do next...

This is my model

has_mongoid_attached_file  :image,
    :styles => { :large => "380x380!" , :medium => "240x240", :small => "120x120!" },
    :storage => :fog,
    :fog_public => true,
    :fog_directory => 'XXXX',
    :path => "images/:id/:style/:basename.:extension",
    :fog_credentials => {  :provider => 'Google',
                           :google_storage_access_key_id => 'XXXXX',
                           :google_storage_secret_access_key => 'XXXXX'}

  validates_attachment_content_type :image, :content_type => ["image/jpg", "image/jpeg", "image/png", "image/gif"]

Thank you for your efforts. I hope you guys can help me

4

There are 4 answers

1
BilalReffas On BEST ANSWER

Okay I found a result. I just created a initializers/paperclip.rb file

require 'paperclip/media_type_spoof_detector'
module Paperclip
  class MediaTypeSpoofDetector
    def spoofed?
      false
    end
  end
end

Right now it work's perfectly for me.

If you have problems with ImageMagick on App Engine using Rails see this link

1
Anatoliy Tszyan On

Looks like Google Cloud can't determine MIME type of uploaded files.

You can map file extensions to types in you initializer (application.rb, production.rb or create initializers/paperclip.rb)

Paperclip.options[:content_type_mappings] = {
  :jpg => "image/jpeg",
  :png => "image/png",
  :gif => "image/gif"
}

But this way spoofing check won't be performed for image files.

7
Nitin Satish Salunke On

That issue occurs because the content-type discovered from file command returns empty string. Actually system is not able to find the file executable so a exception is raised and empty string is returned back. Check the code below

begin
    Paperclip.run("file", "-b --mime :file", :file => '/tmp/RackMultipart20160826-15649-kwvnq2.png').split(/[:;]\s+/).first
rescue Cocaine::CommandLineError
    ""
end

Solution:-

Add below line in you initializer file.

Paperclip.options[:command_path] = '/usr/bin'
0
wbt11a On

I know I am late to the party, but in working with a legacy RoR system, I ran into this issue. The problem arose in setting the app up in Docker. Ultimately paperclip calling imagemagick was attempting to use file to identify mime-type and the minimal Docker did not have it installed. apt-get install file fixed it.