如何使用Paperclip paperclip 4.3.2在Windows上上传csv文件

时间:2015-12-09 16:44:19

标签: ruby-on-rails paperclip spoofing

Paperclip存在这个众所周知的问题。

https://github.com/thoughtbot/paperclip/issues/1924

如何配置我的模型以使这种愚蠢的欺骗验证有效?

在发现问题之前我正在使用:

validates_attachment_content_type :csv_import, :content_type => 'text/csv'

但这在某些版本的Windows上不起作用。在Windows 7 Professional上,我收到此错误:

[paperclip] Content Type Spoof: Filename delivery_detail.csv (application/octet-stream from Headers, [#<MIME::Type:0x00000005077f38 @content_type="text/csv", @raw_media_type="text", @raw_sub_type="csv", @simplified="text/csv", @media_type="text", @sub_type="csv", @extensions=["csv"], @encoding="8bit", @system=nil, @registered=true, @url=["IANA", "RFC4180"], @obsolete=nil, @docs=nil>, #<MIME::Type:0x000000050c7f60 @content_type="text/comma-separated-values", @raw_media_type="text", @raw_sub_type="comma-separated-values", @simplified="text/comma-separated-values", @media_type="text", @sub_type="comma-separated-values", @extensions=["csv"], @encoding="8bit", @system=nil, @registered=false, @url=nil, @obsolete="!", @docs="use-instead:text/csv", @use_instead=["text/csv"]>] from Extension), content type discovered from file command: text/plain. See documentation to allow this combination.

有没有人成功制作回形针上传csv文件?

我尝试了Github问题报告的所有可能的解决方法,但没有任何效果。我需要看看工作示例解决方案。

更新1

sonianand11于2014年10月2日发表评论

https://github.com/thoughtbot/paperclip/issues/1470

这有效,但它涉及关闭内容验证,有没有更好的方法呢?。

1 个答案:

答案 0 :(得分:1)

我提出了以下解决方案:

添加到模型中:

validates_attachment_content_type :my_csv_uploaded_file, content_type: ['text/plain', 'text/csv', 'application/vnd.ms-excel']

和初始化程序:

Paperclip.options[:content_type_mappings] = { csv: 'application/vnd.ms-excel' }

它对我有用。它是使用Windows 7 Professional

测试的