我让客户端使用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处理图像版本?