0

Ich habe ein Problem, wenn ich meine Anwendung auf Google Cloud bereitstellen Ich erhalte diesen FehlerBüroklammer Validierungsproblem auf Produktion

Inhalte hat, die nicht, was sie berichtet wird

Vor Ort sein, es funktioniert fein! Ich habe bereits versucht, den Befehlspfad zu verwenden. Also ich weiß wirklich nicht, was ich als nächstes zu tun haben ...

Das ist mein Modell

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"] 

Vielen Dank für Ihre Bemühungen. Ich hoffe, ihr könnt mir helfen

Antwort

2

Okay, ich habe ein Ergebnis gefunden. Ich habe gerade eine initializers/paperclip.rb Datei

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

Gerade jetzt ist es Arbeit perfekt für mich.

Wenn Sie Probleme mit ImageMagick auf App Engine haben Rails sehen diese link

0

Sieht so aus, als ob Google Cloud den MIME-Typ hochgeladener Dateien nicht ermitteln kann.

Sie können Dateierweiterungen Typen zugeordnet werden in Ihnen Initializer (application.rb, production.rb oder erstellen initializers/paperclip.rb)

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

Aber auf diese Weise Spoofing-Prüfung wird nicht für Bilddateien durchgeführt werden.

+0

Funktioniert nicht für mich Ich kann die Bilder in Google Cloud hochladen, aber nur wenn mein Server lokal läuft. Ich bekomme dieses Problem nur, wenn ich es remote bereitstellen:/ – BilalReffas

3

Das Problem tritt auf, weil der Content-Type von file Befehl gibt leere Zeichenfolge entdeckt. Eigentlich System ist nicht in der Lage, die file ausführbare Datei zu finden, so dass eine Ausnahme ausgelöst wird und leere Zeichenfolge zurückgegeben wird. Überprüfen Sie den Code unten

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

Lösung: -

unterhalb der Linie hinzufügen in Sie Datei Initializer.

+0

Welche Initialisierungsdatei? – BilalReffas

+0

Sie können eine neue Initialisierungsdatei mit dem Namen 'paperclip.rb' einfügen, die tatsächlich zu einer vorhandenen Initialisierungsdatei hinzugefügt wird. –

+0

Muss ich den MediaTypeSpoofDetector entfernen? Und nutzen Sie auch Google App Engine und Rails? – BilalReffas