我正在使用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)
有没有更好的方法来做到更可靠并解决上述错误?感谢
答案 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”