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

问题描述:

我目前正在将我的项目从PHP(codeigniter)迁移到Rails3,这太神奇了。 但我是一个rails/ruby​​新手,所以我遇到了一个我不知道如何解决的问题。Rails3 - 从远程服务器上下载文件并将其上传到S3

我从我的网站(A)从一个特定的网站(B)获得新的东西。它的工作原理是这样的:

  1. 在站点B上页我要提交给我的地盘我点击一个按钮上。
  2. 站点B向站点A上的脚本发出POST请求,并附带该页面的标识符。
  3. 我拿这个ID,并使用CURL发回POST请求返回到站点B.
  4. 站点B返回给我一个包含文件链接的JSON订阅源。
  5. 然后我用CURL下载带有该ID的文件。

对不起,如果解释有点混乱。

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

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

更新:在再次读取Q时,我发现远程文件必须从远程位置发布到rails应用程序,而不是从用户提供的url发布。 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,至极需要carrierwave本身没有设置或配置其他然后几行你上传的文件。

+0

我还没有尝试过,但我相信它会做。谢谢,berkes – bassneck 2011-04-26 20:47:24