【问题标题】:nodejs Transfer uploaded file directly to S3 without double waiting timenodejs 将上传的文件直接传输到 S3 无需双倍等待时间
【发布时间】:2017-06-19 03:22:55
【问题描述】:

您好,我正在为移动应用程序开发 REST api,其中用户将图像上传到应用服务器,然后服务器将图像上传到 amazon 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 秒可以减少一半,到 12 秒左右。如果 Nodejs 足够聪明,可以在最后一个比特到达之后,而是在用户第一个比特到达之后开始上传到 S3 - 不要等待所有文件都上传完毕,而是立即开始流式传输。

这可能吗?

【问题讨论】:

    标签: javascript node.js amazon-web-services file-upload amazon-s3


    【解决方案1】:

    您应该将预签名的 S3 URL 发送给用户,以便用户可以直接上传到 S3,而无需通过您的节点服务器。

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

    【讨论】:

      【解决方案2】:

      当您的 API 可以将文件直接上传到 S3 时,我不确定为什么需要先将文件上传到 EC2,然后再上传到 S3。

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

      在 S3 中,您可以使用 managed uploader 上传大小未知的流,并使用可配置的并发量尽可能执行分段上传。

      托管上传器允许轻松高效地上传 缓冲区、blob 或流,使用可配置的并发量 尽可能执行分段上传。这种抽象也 由于使用多部分,可以上传未知大小的流 上传。

      【讨论】:

        猜你喜欢
        • 2013-02-02
        • 2013-11-14
        • 1970-01-01
        • 1970-01-01
        • 2015-09-13
        • 2021-11-28
        • 2016-11-22
        • 1970-01-01
        • 2013-06-03
        相关资源
        最近更新 更多