2016-05-05 8 views
1

Ich habe eine App in Schienen 4.26 und Ruby 2.3.1 mit Büroklammer 4.3.6, Firefox und Ubuntu 14.0.4 64, die ich zum Hochladen einer GPX-Datei mit dem CodeMime Content-Typ für GPX nicht erkannt mit Büroklammer Edelstein

validates_attachment_content_type :gpx, :content_type => { content_type: 'application/xml' 

auch mit versucht

validates_attachment_content_type :gpx, :content_type => { content_type: 'application/gpx+xml' } 

in meinem Track-Modell, aber nicht die Validierung mit einer gültigen gPX-Datei übergeben.

Wenn ich von Namenerweiterung validieren wie

validates_attachment_file_name :gpx, matches: /gpx\Z/ 

Lasten in Ordnung.

Wenn ich die Datei Befehl ausführen:

$ file demofilelite.gpx --mime-type -b 

ich application/xml als Ausgabe

Ich habe versucht, eine paperclip.rb Datei in config/initializers mit mit

Paperclip.options[:content_type_mappings] = { gpx: %w(application/xml) } 

Aber es hat auch nicht funktioniert. Wie mache ich Paperclip erkennen eine GPX-Datei von Pantomime Inhalt?

Antwort

0

Sie können versuchen, diese Linie zu setzen in Ihrem confing/initilizer/mime_type.rb

Mime :: Type.register "application/gpx": gpx

+1

, die teilweise das Problem mit dem Anti-Spoofing-Motor löst aber es da nicht funktioniert, sollte sich heraus sendet jeden Browser verschiedene Arten von mime Header für eine GPX-Datei – PerseP

1

ich es geschafft, bekommt es in meiner track.rb Modelldatei mit dieser Validierung arbeiten:

validates :gpx, presence: true, attachment_content_type: { content_type: ["application/gpx+xml","text/xml","application/xml","application/octet-stream"] } 

das ist eine andere Kopf- Edge, chrome und Firefox ist. Und die eine initializar in config/initializers/paperclip.rb erstellen mit:

Paperclip.options[:content_type_mappings] = { :gpx => ["application/xml"] } 

mit der Datei Befehlsantwort zu behandeln. Dadurch werden GPX- und XML-Dateien geladen. Wenn Sie nur wollen gpx Sie eine weitere Validierung zu Ihrem Modell hinzufügen:

validates_attachment_file_name :gpx, matches: /gpx\Z/