使用ExpressJS限制文件大小时将streamfile upload到S3

我想将用户的file upload到S3。 我有一个Web客户端/ NodeJS Express解决scheme。

到目前为止,在我的研究中,我发现使用分段上传,我可以做任何一个这样的:

1.)如果直接使用pipe道启用stream,那么我无法控制文件的大小 。

2.)如果需要控制大小,必须禁用pipe道/stream,并且必须将文件写入磁盘或内存缓冲区才能检查文件大小,然后将其传送到S3。

有什么办法可以让这两个?

我正在看以下中间件:

打杂

多党

multer

强大

至less与busboy ,你可以设置各种请求范围的限制。 因此,您可以为所有文件设置文件大小限制(或者通过自行计算并根据自定义文件大小限制排除任何额外的数据,然后直接将数据stream传输到S3(使用Amazon的multipart API) 。 如果busboy通知您已达到文件大小限制,则只需删除刚刚stream向S3的部分文件。

否则,就像你说的那样,先保存到磁盘然后上传到S3。

两者都有其优点和缺点,但由于multipartstream的性质,这个问题实际上没有别的办法。