0

我正在构建一个与第 3 方 API 交互的 Rails 应用程序

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

在某些情况下,上传的大小可能为数百 MB。

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

@tempfile = 参数[:video][:file_upload].tempfile

这虽然很慢,但感觉有点脏。

有一个更好的方法吗?

4

2 回答 2

1

是否可以让用户直接发布到 3rd 方服务,或者您是否必须通过 Rails 堆栈处理 API?理想情况下,您将能够做到这一点,并且不必将文件加载到您的堆栈中,然后将其重新发布到 API。如果您不能直接发布,我建议您查看 API 是否具有流服务,以便您可以一次发送部分文件而不是整个文件。无论哪种方式,我认为您将开始在您身边和在 API 端遇到大文件的超时错误,因此您必须增加自己的超时时间或创建不同类型的流文件上传器。

于 2011-02-08T18:52:58.543 回答
0

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

https://github.com/tobi/delayed_job

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

于 2011-02-08T18:47:59.847 回答