如何使用carrierwave处理直接上传到亚马逊s3的图像?

时间:2015-09-30 17:38:55

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

我让客户端使用javascript将图像直接上传到S3,并设计了url,就像载波上传它时一样(通过使用我传递给create方法的unique_id)。上传图像后,我想发送一个AJAX请求来创建记录,然后使用carrierwave处理图像,但我不需要carrierwave来处理上传,只需处理版本。

我有这种典型的载波设置使用雾宝石进行s3存储:

class Picture < ActiveRecord::Base
  mount_uploader :image, ImageUploader
  # . . .
end

和此:

class ImageUploader < CarrierWave::Uploader::Base
  include CarrierWave::RMagick

  storage :fog

  def store_dir
    "uploads/picture/#{model.unique_id}"
  end

  version :large do
    resize_to_limit(600, 600)
  end

  # . . .

end

但我无法弄清楚如何在没有载波想要处理上传的情况下创建新的Picture

我尝试将Picture.image设置为文件名,但它变为nil:

>> Picture.create(image: params[:filename], unique_id: params[:unique_id])
=> #<Picture id: 96, image: nil, ... >

我还尝试使用carrierwave&#34;从远程位置上传文件来获取图像&#34;特征:

class PicturesController < ApplicationController                                                                                  
  def create
    @picture = Picture.create(
      remote_image_url: params[:url],
      unique_id: params[:unique_id]
    ) 
   # . . . 
   end
  # . . .
end

最终会有效,但是需要额外下载和上传,感觉不对。

如何在没有载波的情况下创建Picture,然后让carrierwave处理图像版本?

0 个答案:

没有答案