I gonna upload files to rackspace(video, audio and images) in rails with paperclip or carrierwave, I need to Know the kind of file, to show in the view with image_tag, or video_tag or audio_tag, rackspace tell me the kind of file? or I have to store in my database? thanks
问问题
72 次
2 回答
2
您可以使用“ruby-cloudfiles”库中的“content_type”函数查询/设置文件类型。
见这里:https ://github.com/rackerlabs/ruby-cloudfiles/blob/master/lib/cloudfiles/storage_object.rb#L80-L82
像这样的东西应该适用于创建对象:
container = conn.create_container('new_container')
obj = container.create_object('new_obj.txt')
obj.load_from_filename('./obj.txt')
obj.content_type = 'text/plain'
并检索对象:
obj = container.object('new_obj.txt')
puts obj.content_type # text/plain
于 2013-09-25T15:15:10.360 回答
1
即使 rackspace 会告诉您文件类型,您也不希望它告诉您,因为从您的服务器到他们的服务器的往返运行需要很长时间。
我下面的代码示例假设使用载波,但我确信回形针有类似的选项。两种选择:
- 解释文件扩展名
类似:File.extname(user.avatar)
,然后您必须根据自己的喜好对其进行解释。
- 记录和解释 MIME 类型。
carrierwave 自述文件首先解释了如何让carrierwave 进行计算,然后您应该手动或使用carrierwave-meta将其存储到您的数据库中。然后user.avatar.content_type
将是image/jpeg
您可以轻松解释为特定文件类型的东西。
于 2013-09-25T15:07:15.937 回答