Ruby on rails 如何将现有文件从文件系统上传到rails 4中的aws s3?

Ruby on rails 如何将现有文件从文件系统上传到rails 4中的aws s3?,ruby-on-rails,file-upload,amazon-s3,carrierwave,Ruby On Rails,File Upload,Amazon S3,Carrierwave,我有两个服务,即视图(不存储任何内容)和用户(存储记录)。View获取数据并将其上载到用户服务。我正在使用em http请求进行两个应用程序之间的交互。现在,要上传用户的照片,我需要先将其存储在临时存储器中,然后将其上传到s3。不建议将其直接存储到amazon s3并等待响应。 我想做的是: 1.将图像保存到临时存储中,例如公共/上载.. 2.将数据保存在用户服务中,照片url为“public/uploads/photo1.jpg” 3.将保存的照片(使用url检索)上载到s3,并在后台异步获取

我有两个服务,即视图(不存储任何内容)和用户(存储记录)。View获取数据并将其上载到用户服务。我正在使用em http请求进行两个应用程序之间的交互。现在,要上传用户的照片,我需要先将其存储在临时存储器中,然后将其上传到s3。不建议将其直接存储到amazon s3并等待响应。
我想做的是:
1.将图像保存到临时存储中,例如公共/上载..
2.将数据保存在用户服务中,照片url为“public/uploads/photo1.jpg”
3.将保存的照片(使用url检索)上载到s3,并在后台异步获取其响应
4.收到响应后,使用新的照片url将记录更新回用户服务

我已经完成了步骤1和2,也将完成步骤4。重要的部分是步骤3。
1.工人->哪一个更好:Starling和working还是Sidekiq(它在内部使用redis)
2.要使用的服务:aws sdk、carrierwave、回形针。
我可以将amazon sdk与上面的任何Worker一起使用,但它不会为我提供诸如调整大小和其他很酷的功能。
就我个人而言,我想使用carrierwave,但在这种情况下无法获得一个好主意。此外,如果这项任务可以在不使用这些工人的情况下完成,那么就没有问题

我已将其编码为:

    user_params = params['user']
    uploaded_io = user_params['photo']
    File.open(Rails.root.join('public', 'uploads', uploaded_io.original_filename), 'wb') do |file|
        file.write(uploaded_io.read)
    end
    user_params['photo'] = 'public/uploads/' + uploaded_io.original_filename
接下来,我将用户参数保存到用户服务并更新数据库。
在这里,第3步将被适应

一个完全不同的上传文件的方法也将受到赞赏。谢谢