【问题标题】:Upload large files using Ruby使用 Ruby 上传大文件
【发布时间】:2011-03-24 21:44:57
【问题描述】:

我想知道允许使用 Ruby 将大文件上传到服务器的最佳模式是什么。

我找到了Rails and Large, Large file Uploads: Looking at the alternative,但它没有给出任何具体的解决方案。

我不想使用 Rails,因为我正在开发一个以独立模式运行的简单上传服务器。我猜 Sinatra 可能是关键,但我不知道应该使用哪个 Web 服务器来运行它而不引发超时。

我还需要这个网络服务器来允许同时上传。

更新:“大文件”是指 200MB 到 5GB 之间。

UPDATE2:由于这些文件是视频(在我的情况下),我可以像 youtube 一样处理 2GB 的最大大小。

【问题讨论】:

  • 您能否定义“大”文件(您要上传的一般文件大小)?
  • 我建议您考虑在这种情况下利用 S3。容纳这样的大文件可能很昂贵 - S3 使它相当便宜。如果您对此感兴趣,请查看使用为 s3 配置的回形针。该 gem 通常与 Rails 一起使用,但很有可能您可以使其仅与 Ruby 一起使用。 - 我知道这与您的要求相去甚远,因此是评论而不是答案。祝你好运。

标签: ruby webserver sinatra file-upload large-files


【解决方案1】:

好的,我在这里有点紧张,但是: 如果您使用 couchdb 作为上传目标,您将摆脱超时问题。 在此示例中,将 couchdb 视为一些“临时”内存。 因此,如果下载完成,您可以从 couchdb 中获取文件并随心所欲地处理它。 我设法通过 dsl 线路将 9gb 的文件上传到 couchdb 中,而没有任何戏剧性。 这可能需要一些阅读,但我认为你可以让它发挥作用。

couchdb 有许多 rails gems,所以它和其他人相处得很好;)

如果你想去那个兔子洞,请告诉我,这样我就可以给你更多指点

【讨论】:

  • 我真的很喜欢这个主意。我今天试一试:)
  • 我认为这有点牵强,而且你需要在你的应用程序中实现一个 couchdb 来支持文件上传似乎很奇怪。我喜欢这个主意,它可能对某些人有用。
【解决方案2】:

乘客建议使用单独的 apache/nginx 模块来处理上传。

【讨论】:

  • 你知道如何实现这个吗?我找不到任何关于 nginx+passenger 处理大文件的文档。
  • 嗯。看起来有 apache 但没有 nginx 的选项?也许这只是一个关于允许上传的通用 nginx 指令......blog.schuerrer.org/post/571570048/… 可能会有所帮助
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-05-04
  • 1970-01-01
  • 2012-06-20
  • 2011-10-03
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多