使用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。
两者都有其优点和缺点,但由于multipart
stream的性质,这个问题实际上没有别的办法。