Rails3 - 从远程服务器下载文件并将其上传到S3

时间:2011-04-26 15:21:55

标签: ruby-on-rails ruby post amazon-s3

我目前正在将我的项目从PHP(codeigniter)迁移到Rails3,这太棒了。 但我是一个rails / ruby​​新手,所以我遇到了一个我不知道如何解决的问题。

我从某个网站(B)在我的网站(A)上获得了新内容。它的工作原理如下:

  1. 在我要提交到我的网站页面的网站B上,我点击了一个按钮。
  2. 站点B向站点A上的脚本发出POST请求,其中包含该页面的标识符。
  3. 我使用此ID,并使用CURL发回POST请求回到站点B.
  4. 网站B返回一个带有文件链接的JSON Feed。
  5. 然后我使用CURL下载具有该ID的文件。
  6. 很抱歉,如果解释有点混乱。

    对于步骤1和2,我假设,我必须在某个控制器中创建POST路由和方法。 但其余的对我来说并不是那么清楚。

    此外,在php项目中,我在同一台服务器上托管文件。现在我使用heroku,所以我需要把这些文件放到S3。

1 个答案:

答案 0 :(得分:1)

更新:再次阅读Q时,我发现远程文件必须从远程位置发布到rails应用程序,而不是用户提供的网址。 Carrierwave很可能仍然可以解决这个问题,但我没有这方面的经验。

carrierwave非常简单。

设置完成后,carrierwave将检测某些内容是文件上传还是远程文件的路径并导入。

<%= form_for @user, :html => {:multipart => true} do |f| %>
  <p>
    <label>My Avatar URL:</label>
    <%= image_tag(@user.avatar_url) if @user.avatar? %>
    <%= f.text_field :remote_avatar_url %>
  </p>
<% end %>

本地支持S3存储,通过fog,除了在载波本身的上传器文件中的几行之外,不需要任何设置或配置。