gpx的mime内容类型无法用回形针gem识别

时间:2016-05-05 13:23:55

标签: ruby-on-rails paperclip

我有一个应用程序在rails 4.26和ruby 2.3.1与paperclip 4.3.6,firefox和Ubuntu 14.0.4 64我用来上传带代码的gpx文件

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

也试过

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

在我的Track模型中,但没有通过有效的gpx文件验证。

如果我通过名称扩展名验证,如

validates_attachment_file_name :gpx, matches: /gpx\Z/

加载很好。

当我运行文件命令时:

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

我明白了 应用程序/ XML 作为输出

我尝试在config / initializers中使用paperclip.rb文件

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

但它也没有用。 如何通过哑剧内容使回形针识别gpx文件?

2 个答案:

答案 0 :(得分:1)

我设法在track.rb模型文件中使用此验证:

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

这是Edge,chrome和firefox的不同标题。 并在config / initializers / paperclip.rb中创建一个initializar:

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

处理文件命令响应。 这将加载gpx和xml文件。如果您只需要gpx,则必须为模型添加另一个验证:

validates_attachment_file_name :gpx, matches: /gpx\Z/

答案 1 :(得分:0)

  

你可以试着把这一行放在你的   confing / initilizer / mime_type.rb

     

Mime :: Type.register“application / gpx”,:gpx