使用回形针和雾上传到Rackspace云文件

时间:2013-01-04 13:38:18

标签: ruby-on-rails-3 paperclip rackspace-cloud fog cloudfiles

无法弄清楚怎么做?并且无法从其他任何地方找到帮助!

我已经像这样设置了回形针和雾;

配置/初始化/ fog.rb

     connection = Fog::Storage.new({
       :provider           => 'Rackspace',
       :rackspace_username => '',
       :rackspace_api_key  => ''
     })

的environment.rb;

    Paperclip::Attachment.default_options.update({
    :path             => ":attachment/:id/:timestamp_:style.:extension",
    :storage          => :fog,
    :fog_credentials  => {
      :provider           => 'Rackspace',
      :rackspace_username => '',
      :rackspace_api_key  => '',
      :persistent         => false
    },
    :fog_directory    => '',
    :fog_public       => true

})

我正在使用file_field获取图片,然后将其发布到我的控制器。这让我得到了这样的东西;

"pic"=>{"image"=>#<ActionDispatch::Http::UploadedFile:0x007f90ac06a6c8 @original_filename="3245-1920x1200.jpg", @content_type="image/jpeg", @headers="Content-Disposition: form-data; name=\"cloth[pic][image]\"; filename=\"3245-1920x1200.jpg\"\r\nContent-Type: image/jpeg\r\n", @tempfile=#<File:/tmp/RackMultipart20130104-5386-103laem>>}

我无法理解的是,我如何使用类似的东西将此文件实际保存到云文件中;

file = directory.files.create(
  :key    => 'resume.html',
  :body   => File.open("/path/to/my/resume.html"),
  :public => true
)

修改

相关模型;

class Cloth
  include Mongoid::Document
  has_many :pics

class Pic
  include Mongoid::Document
  include Mongoid::Paperclip
    belongs_to :cloth

    has_mongoid_attached_file :image, :styles => { :medium => "300x300>", :thumb => "100x100>" }

在控制器中,这就是我目前基于以上参数创建图片的方式;

@cloth = Cloth.new
@cloth.pics.create!(params[:cloth][:pic])

2 个答案:

答案 0 :(得分:3)

让我们退后一步,从不同角度看问题。您能看到以下脚本是否会将图像上传到您的容器中:

require 'fog'
service = Fog::Storage.new({
  :provider                 => 'Rackspace',
  :rackspace_username        => YOUR_USERNAME,
  :rackspace_api_key    => YOUR_API_KEY
  })

container = service.directories.new(:key => YOUR_CONTAINER_NAME)
container.files.create :key => 'my-pix.jpg', :body => File.open PATH_TO_FILE

使用适当的变量更新大写参数,让我知道会发生什么。希望这有助于缩小问题范围。

答案 1 :(得分:2)

Paperclip和ActiveRecord应自动为您处理文件上传。这是一个很好的快速入门解释过程:

https://github.com/thoughtbot/paperclip#quick-start

如果您仍然遇到问题,可以向我提供相关的控制器和型号代码吗?