有没有办法使用Fog和CarrierWave读取文件对象?

时间:2012-08-27 15:52:29

标签: ruby-on-rails amazon-s3 ruby-on-rails-3.2 carrierwave fog

我使用CarrierWave和Fog将附件存储到S3上的ActiveRecord模型。我可以使用它们来生成URL,但我似乎找不到任何方法来实际读取文件。

这是Fog gem甚至会做的事情,还是我需要使用S3 gem呢?

2 个答案:

答案 0 :(得分:23)

您可以在上传器对象上使用read方法。如果我们有一个名为MyModel的模型,其中有一个名为attachment的字段,它是使用CarrierWave的mount_uploader方法添加的,我们可以执行以下操作:

obj = MyModel.first
contents = obj.attachment.read

这将获得文件的实际内容。查看this doc

答案 1 :(得分:3)

您只需要open-uri

require 'open-uri'
file_contents = open(string_url) {|f| f.read }