我想将用户的文件上传到S3。我有一个Web客户端/ NodeJS Express解决方案。
到目前为止,在我的研究中,我发现使用分段上传,我可以做其中任何一个:
1。)如果直接使用管道启用流媒体,则i cannot control the size of the file。
2.。)如果需要控制大小,必须禁用管道/流媒体,并且必须将文件写入磁盘或内存缓冲区以检查文件大小,然后将其传输到S3。
我有什么办法可以同时获得这两种吗?
我正在查看以下中间件:
答案 0 :(得分:1)
至少使用busboy
,您可以设置各种请求范围的限制。因此,您可以为所有文件设置文件大小限制(或者通过自己计算并在自定义文件大小限制内排除任何额外数据,以每个文件为基础),然后直接流式传输到S3(使用亚马逊的多部分API) 。如果busboy
通知您已达到文件大小限制,那么您只需删除刚刚流式传输到S3的部分文件。
否则,替代方案就像你说的那样,首先保存到磁盘然后上传到S3。
两者各有优缺点,但由于multipart
流的性质,实际上没有其他解决方案可以解决这个问题。