0

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

4

2 回答 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 会告诉您文件类型,您也不希望它告诉您,因为从您的服务器到他们的服务器的往返运行需要很长时间。

我下面的代码示例假设使用载波,但我确信回形针有类似的选项。两种选择:

  1. 解释文件扩展名

类似:File.extname(user.avatar),然后您必须根据自己的喜好对其进行解释。

  1. 记录和解释 MIME 类型。

carrierwave 自述文件首先解释了如何让carrierwave 进行计算,然后您应该手动或使用carrierwave-meta将其存储到您的数据库中。然后user.avatar.content_type将是image/jpeg您可以轻松解释为特定文件类型的东西。

于 2013-09-25T15:07:15.937 回答