Rails:生成屏幕截图但如何通过carrierwave / fog将其保存到S3或从S3中恢复

时间:2018-02-21 00:53:49

标签: ruby-on-rails amazon-s3

我可以通过gem' Gastly'生成屏幕截图。 如果没有模型,只有屏幕控制器的请求,屏幕截图将被拍摄并保存到公共文件夹中。

ScreensController:

def index

id = current_user.id
first_name = current_user.first_name
target = "http://localhost:3000/users/#{id}?start_date=#{params[:start_date]}"
@screenshot = Gastly.screenshot(target)
@screenshot.selector = '.simple-calendar'
@image = @screenshot.capture
date_mark = params[:start_date].split('-')[0..1].join('-')

if @image.save("public/images/image-#{id}-#{first_name}-#{date_mark}.png")
  redirect_to user_path(current_user)
end

end

我尝试使用carrierwave和fog将文件存储到S3。

  1. 我生成了ScreenshotUploader:rails g uploader Screenshot
  2. 截图
  3. 在screenshot_uploader.rb中,我取消注释include CarrierWave::MiniMagick; storage :fog;至于def store_dir,我只是把#34;上传/"而不是默认的"uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id},因为没有模型。
  4. 然后我修改了上面的ScreensController:

    if @image.save("public/images/image-#{id}-#{first_name}-#{date_mark}.png")
    uploader = ScreenshotUploader.new
    uploader.store!(@image)
    redirect_to user_path(current_user)
    end
    
  5. 结果:屏幕截图刚刚保存到公共文件夹,S3中没有任何内容。

0 个答案:

没有答案