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

时间:2017-09-12 14:56:20

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

我有两个服务即视图(不存储任何东西)和用户(存储记录)。查看提取并将数据上载到用户服务。我正在使用em-http-request进行两个应用程序之间的交互。现在,要上传用户的照片,我需要先将其存储在临时存储中,然后将其上传到s3。不建议将其直接存放在亚马逊s3上并等待响应 我想做的是:
1.将图像保存到临时存储,例如公共/上传..
2.将数据保存在用户服务中,将photo_url保存为" public / uploads / photo1.jpg"
3.将保存的照片(使用网址检索)上传到s3并在背景中异步获取响应 4.收到响应后,使用新的photo_url将记录更新回用户服务。

我完成了第1步和第2步,也将完成第4步。重要的部分是第3步 1.工人 - >哪些更好:Starling和工作或Sidekiq(它在内部使用redis)
2.使用服务:aws-sdk,carrierwave,paperclip 我可以将amazon-sdk与上面的任何工作人员一起使用,但它不能为我提供调整大小和其他很酷的功能。
我个人想使用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

接下来,我将user_params发送到用户服务并更新数据库 这里的第3步将是适应的。

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

0 个答案:

没有答案