热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

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

ImcurrentlymigratingmyprojectfromPHP(codeigniter)toRails3anditsamazing.ButImarail

I'm currently migrating my project from PHP (codeigniter) to Rails3 and it's amazing. But I'm a rails/ruby newbie so I've faced a problem which I don't know how to solve.

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

I get new stuff on my site (A) from one certain site (B). It works like this:

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

  1. On site B on a page I want to submit to my site I click a button.
  2. 在站点B上,在我想提交给站点的页面上,我点击一个按钮。
  3. Site B makes a POST request to my script on site A with an identifier of that page.
  4. 站点B对我在站点a上的脚本发出POST请求,其中包含该页面的标识符。
  5. I take this ID, and make a POST request with CURL back to the site B.
  6. 我拿着这个ID,用CURL返回到site B。
  7. Site B returns me a JSON feed with links to files.
  8. 站点B返回一个JSON提要,其中包含指向文件的链接。
  9. Then I use CURL to download the files with that ID.
  10. 然后我使用CURL来下载具有该ID的文件。

Sorry if the explanation is a bit cluttered.

抱歉,如果解释有点混乱。

For steps 1 and 2 I assume, I have to make a POST route and a method in some controller. But the rest isn't that clear to me.

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

Additionally, in php project I hosted files on the same servers. And now I use heroku, so I need to put those files to S3.

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

1 个解决方案

#1


1  

update: On reading the Q again, I see that the remote files must be posted from a remote location into the rails app, not from a user-provided url. Carrierwave can most probably still deal with this, but I have no experience in this particular area.

更新:再次读取Q时,我发现远程文件必须从远程位置发送到rails应用程序,而不是从用户提供的url。Carrierwave很可能还在处理这个问题,但是我在这个领域没有经验。

This is really simple with carrierwave.

这对carrierwave来说非常简单。

Once set up, carrierwave will detect wether something is either a file upload or a path to a remote file and import it.

一旦设置好,carrierwave将检测文件上传或远程文件路径,并将其导入。

<%= form_for @user, :html => {:multipart => true} do |f| %>
  

<%= image_tag(@user.avatar_url) if @user.avatar? %> <%= f.text_field :remote_avatar_url %>

<% end %>

S3 storage is supported natively, trough fog, wich needs no set-up or configuration other then a few lines in your uploader file in carrierwave itself.

S3存储是本地支持的,槽型大雾,不需要设置或配置,然后在您的上传器文件中的一些行在carrierwave本身。


推荐阅读
author-avatar
宾利Bentley乀Motors
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有