我正在构建一个与第 3 方 API 交互的 Rails 应用程序
当用户将文件上传到 Rails 时,它应该通过 HTTP POST 转发到第三方站点。
在某些情况下,上传的大小可能为数百 MB。
目前,我刚刚使用 Net::HTTP 重新发布到 API 并像这样访问多部分表单对象
@tempfile = 参数[:video][:file_upload].tempfile
这虽然很慢,但感觉有点脏。
有一个更好的方法吗?
我正在构建一个与第 3 方 API 交互的 Rails 应用程序
当用户将文件上传到 Rails 时,它应该通过 HTTP POST 转发到第三方站点。
在某些情况下,上传的大小可能为数百 MB。
目前,我刚刚使用 Net::HTTP 重新发布到 API 并像这样访问多部分表单对象
@tempfile = 参数[:video][:file_upload].tempfile
这虽然很慢,但感觉有点脏。
有一个更好的方法吗?
是否可以让用户直接发布到 3rd 方服务,或者您是否必须通过 Rails 堆栈处理 API?理想情况下,您将能够做到这一点,并且不必将文件加载到您的堆栈中,然后将其重新发布到 API。如果您不能直接发布,我建议您查看 API 是否具有流服务,以便您可以一次发送部分文件而不是整个文件。无论哪种方式,我认为您将开始在您身边和在 API 端遇到大文件的超时错误,因此您必须增加自己的超时时间或创建不同类型的流文件上传器。
使用 DelayedJob 启动后台作业。在延迟的工作中,您可以尝试使用 rails redirect_to。