Paperclip validation issue on production

可紊 提交于 2019-12-08 08:48:50

问题


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


回答1:


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




回答2:


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'



回答3:


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.



来源:https://stackoverflow.com/questions/36240872/paperclip-validation-issue-on-production

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!