使用Ruby发布多部分表单数据

时间:2011-02-08 18:37:31

标签: ruby-on-rails ruby http multipartform-data

我正在构建一个与第三方API交互的rails应用

当用户将文件上传到rails时,应通过HTTP POST将其转发到第三方站点。

在某些情况下,上传可能是几百MB。

目前,我刚刚使用Net :: HTTP重新发布到API并访问了多部分表单对象

@tempfile = params [:video] [:file_upload] .tempfile

虽然这很麻烦但感觉有点脏。

有更好的方法吗?

2 个答案:

答案 0 :(得分:1)

是否可以让用户直接发布到第三方服务,或者您是否必须通过Rails堆栈处理API?理想情况下,您可以执行此操作,而不必将文件加载到堆栈中,然后将其重新发布到API。如果您无法直接发布,我建议您查看API是否有流媒体服务,这样您就可以立即发送部分文件而不是整个文件。无论哪种方式,我认为您将开始遇到大量文件的API和API侧的Timeout错误,因此您必须增加自己的超时或创建不同类型的流式文件上传器。

答案 1 :(得分:0)

使用DelayedJob启动后台作业。在延迟的工作中,您可以尝试rails redirect_to。

https://github.com/tobi/delayed_job

http://apidock.com/rails/ActionController/Base/redirect_to