使用带有sinatra的ruby将video上传到Amazon S3

我正在构建一个Android应用程序,其后端写在ruby / sinatra上。 Android应用程序的数据以json数据的forms出现。 正在使用的数据库是mongodb。

我能够捕获后端的数据。 现在我要做的是上传一个在Android应用程序上以字节数组的forms发送的video。 我还想将video以字符串的forms存储在本地数据库中。 我一直在使用载波,雾和载波 – mongoidgem,但没有任何运气。

以下是我关注的一些博客:

https://blog.engineyard.com/2011/a-gentle-introduction-to-carrierwave/

http://www.javahabit.com/2012/06/03/saving-files-in-amazon-s3-using-carrierwave-and-fog-gem/

如果有人可以指导我如何专门与sinatra和mongodb一起解决这个问题,那就是我面临的主要问题。

您可能会考虑使用AWS SDK for Android直接上传到S3,以便在用户上传文件时您的应用服务器线程不会卡住。 如果您使用像Heroku这样的服务,那么您只需要支付额外的$$$就可以了解您的用户是否存在糟糕的连接。

但是在这种情况下;

使用carrierwave进行安装后,上传到S3应该是直接的。

您永远不应该将您的video存储在数据库中,因为它会降低您的速度! 数据库没有针对文件进行优化,操作系统也是如此。 video是二进制数据,不能存储为文本,如果你想犯这种罪,你需要一个blob类型。

IMO,上传到S3就足够了,因为您可以使用亚马逊云端CDN服务以更优化的方式复制和分发您的内容。