我可以通过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。
rails g uploader Screenshot
include CarrierWave::MiniMagick
; storage :fog
;至于def store_dir
,我只是把#34;上传/"而不是默认的"uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}
,因为没有模型。然后我修改了上面的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
结果:屏幕截图刚刚保存到公共文件夹,S3中没有任何内容。