Paper Clip无法为没有扩展名的文件设置附件内容类型

时间:2012-12-05 20:00:20

标签: ruby-on-rails ruby-on-rails-3 amazon-s3 paperclip

我正在使用rails 3 + paperclip + s3(私人存储桶)来允许用户上传文件。

用户可以上传没有扩展名的文件,例如rails gemfile,这只是“gemfile”而不是“gemfile.txt”当你上传这个文件时,paperclip不会设置attachment_content_type。

我正在确定content_type:

self.attachment.instance_write(:content_type, MIME::Types.type_for(self.attachment_file_name).to_s)

有没有更好的方法来做到更可靠并解决上述错误?感谢

1 个答案:

答案 0 :(得分:1)

您要求MIME :: Types查找具有给定文件名的类型。它希望在attachment_file_name中包含文件扩展名(例如image_12.jpg:扩展名为.jpg,因此MIME::Types.type_for知道该文件是图像)。

您在寻找什么:

params[:image].content_type # return the content_type
# assuming :image is the name of the form file field

一点点研究:

  

根据文件返回属于的MIME :: Types列表   文件扩展名

http://mime-types.rubyforge.org/MIME/Types.html + ctrl-F“type_for”