nodejs将上传的文件直接传输到S3,而不需要等待两个时间

您好,我正在开发REST API的移动应用程序,其中用户上传图像到应用程序服务器,然后服务器上传图像到亚马逊S3和更新数据库。

问题:

1.User wants to upload 10MB file It takes 10 seconds to travel from user's device to my server 2.After server has received last bit, it starts uploading to S3. Another 10 seconds. 3.After 20 seconds in total, user is presented with hyperlink. 

我觉得这20秒可以减less一半,减less到12个左右。 如果Nodejs足够聪明,可以在最后一位到达后开始上传到S3,但是在用户到达第一位之后 – 不要等待所有file upload,而是开始stream式传输。

这可能吗?

您应该向用户发送预先签名的S3 URL,以便用户可以直接上传到S3,而不是通过您的节点服务器。

看到这里: http : //docs.aws.amazon.com/AmazonS3/latest/dev/PresignedUrlUploadObject.html

我不知道为什么你需要首先上传你的文件到EC2然后到S3,当你的API可以直接上传文件到S3。

此外,node.js足够聪明,可以让您在抵达时开始处理数据(例如,在busboy中查看on('file')事件)。

在S3中,您可以使用托pipe上传器使用可configuration的并发量上传未知大小的stream,以尽可能地执行分段上传。

托pipe的上传器允许轻松高效地上传缓冲区,Blob或stream,使用可configuration的并发量在可能的情况下执行分段上传。 由于使用了分段上传,该抽象还可以上传未知大小的stream。