如何使用node.js强大的库来接收上传的文件并使用knox将其保存到Amazon S3?

我想从网页上传表格,直接将文件保存到S3,而不先保存到磁盘。 这个node.js应用程序将被部署到Heroku,在那里没有本地磁盘来保存文件。

节点强大的库提供了一个上传文件并将其保存到磁盘的好方法。 我不知道如何closures强大的(或连接forms)从保存文件第一。 另一方面, Knox库提供了一种从磁盘读取文件并将其保存在Amazon S3上的方法。

1)有没有办法挂钩到强大的事件(数据)发送stream诺克斯的事件,以便我可以直接将上传的文件保存在我的Amazon S3存储桶? 2)是否有任何库或代码片段可以让我直接采用上传的文件并使用node.js将其保存到Amazon S3?

这里有一个类似的问题,但答案没有解决不将文件保存到磁盘。

看起来没有好办法做到这一点。 一个原因可能是节点强大的库将上传的文件保存到磁盘。 我找不到任何其他的select。 knox库将保存的文件保存在磁盘上,并使用Amazon S3凭据将其上传到Amazon。

由于在Heroku上我不能保存文件在本地,我结束了使用transloadit服务。 虽然他们的authentication文档有一些学习曲线,但我发现这个服务很有用。

对于那些想使用node.js使用transloadit的人来说,下面的代码示例可能会有帮助(transloadit页面只有Ruby和PHP的例子)

var crypto, signature; crypto = require('crypto'); signature = crypto.createHmac("sha1", 'auth secret'). update('some string'). digest("hex") console.log(signature); 

这是AwsSum的创造者Andy:

我刚刚发布了这个库的v0.2.0。 它会上传由Express bodyParser()创build的文件,虽然如你所说,这在Heroku上不起作用:

不过,我会考虑在下一个版本(v0.3.0)中增加从强大的stream向S3的能力。 现在,请看看是否有帮助。 🙂