使用Ruby上传大文件

4
我想知道使用Ruby上传大文件到服务器的最佳方法。我找到了Rails和大型文件上传:看看替代方案,但它没有提供任何具体的解决方案。
我不想使用Rails,因为我正在开发一个简单的上传服务器,将以独立模式运行。我猜想Sinatra可能是关键,但我不知道应该使用哪个Web服务器来运行它,而不会引发超时问题。
我还需要这个Web服务器允许同时上传。
更新:我的意思是上传文件大小在200MB到5GB之间。
更新2:由于这些文件是视频(在我的情况下),所以我可以处理像YouTube一样的最大大小为2GB。

你能定义“大型”文件吗?(你想要上传的一般文件大小是多少?) - Brian
1
我鼓励你考虑在这种情况下利用 S3。存储像那样大的文件可能很昂贵,使用 S3 则相对便宜。如果你感兴趣,可以查看配置为 s3 的 paperclip。该 gem 通常与 Rails 一起使用,但你也有很大的机会让它只运行于 Ruby。-- 我知道这离你所要求的差距很远,因此这只是一条评论而不是答案。祝你好运。 - Bobby B
2个回答

0

好的,我在这里稍微冒险一下:

如果您将CouchDB用作上传目标,则可以摆脱超时问题。

在此示例中,将CouchDB视为某种“临时”内存。

因此,如果下载完成,您可以从CouchDB中获取文件并对其进行任何操作。

我成功地通过DSL线路将大小达9GB的文件上传到CouchDB中,没有任何问题。

可能需要一些阅读,但我认为您可以使其正常工作。

CouchDB有许多Rails宝石,因此它与其他内容兼容;)

如果您想要深入了解,请告诉我,我可以给您更多指针。


我非常喜欢这个想法。今天我会试一试 :) - garno
我认为这有些牵强,似乎很奇怪,你需要实现一个couchdb到你的应用程序中,只是为了支持文件上传。我喜欢这个想法,它可能适用于一些人。 - Matt Smith

0

Passenger建议使用单独的Apache/Nginx模块来处理上传。


1
你有关于如何实现这个的线索吗?我找不到任何关于nginx+passenger处理大文件的文档。 - garno
嗯,看起来有Apache的选项,但没有Nginx?也许这只是一个通用的Nginx指令,用于允许上传... http://blog.schuerrer.org/post/571570048/file-upload-progress-done-right 可能会有所帮助。 - rogerdpack

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接