2010-08-03 138 views
4

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

我发现Rails and Large, Large file Uploads: Looking at the alternative但它没有提供任何具体的解决方案。

我不想使用Rails,因为我正在处理将在独立模式下运行的简单上载服务器。我猜Sinatra可能是关键,但我不知道应该使用哪个Web服务器来运行它,而不会引起Timeout。

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

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

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

+0

你能定义'大'文件(你想要上传的一般文件大小)吗? – Brian 2010-08-03 18:55:22

+0

东西像5GB。 – garno 2010-08-03 19:02:06

+1

我鼓励你在这种情况下考虑利用S3。像这样安置大型文件可能会很昂贵 - S3使它相当便宜。如果这是您感兴趣的内容,请查看使用为s3配置的回形针。这个gem通常与Rails一起使用,但是你可以使它只与Ruby一起工作。 - 我知道这与你所要求的相差甚远,因此评论并不是答案。祝你好运。 – 2010-08-04 11:14:04

回答

0

好吧我在这里采取了一些strech,但: 如果您将使用couchdb作为您的上传目标,您将摆脱超时问题。 在这个例子中,将couchdb视为一些“临时”内存。 因此,如果下载完成,您可以从couchdb中取出文件,然后使用它执行任何操作。 我设法将一个大小为9gb的文件通过DSL线上传到没有任何戏剧性的couchdb中。 它可能需要一点阅读,但我认为你可以使它工作。

CouchDB中有许多铁轨宝石所以它起着与他人不错;)

让我知道如果你想要走这兔子洞,所以我可以给你一些更多的指针

+0

我非常喜欢这个主意。我今天就试试:) – garno 2010-08-04 13:17:25

+0

我认为这是相当长的一段时间,似乎很奇怪,你需要实现一个couchdb到你的应用程序只是为了支持文件上传。我喜欢这个主意,它可能适用于某些人。 – 2012-05-14 22:26:33

0

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

+1

你有没有提示如何实现这一点?我找不到任何关于nginx +乘客处理大文件的文档。 – garno 2010-08-04 17:40:37

+0

嗯。看起来像有Apache的选项,但不是Nginx?也许这只是一个通用的nginx指令,在哪里允许上传... http://blog.schuerrer.org/post/571570048/file-upload-progress-done-right 可能有帮助 – rogerdpack 2010-08-04 20:29:36