我有一个应用程序在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文件?
答案 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