使用ExpressJS限制文件大小时将文件流上载到S3

时间:2014-09-23 17:19:38

标签: node.js amazon-web-services express amazon-s3

我想将用户的文件上传到S3。我有一个Web客户端/ NodeJS Express解决方案。

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

1。)如果直接使用管道启用流媒体,则i cannot control the size of the file

2.。)如果需要控制大小,必须禁用管道/流媒体,并且必须将文件写入磁盘或内存缓冲区以检查文件大小,然后将其传输到S3。

我有什么办法可以同时获得这两种吗?

我正在查看以下中间件:

busboy

multiparty

multer

formidable

1 个答案:

答案 0 :(得分:1)

至少使用busboy,您可以设置各种请求范围的限制。因此,您可以为所有文件设置文件大小限制(或者通过自己计算并在自定义文件大小限制内排除任何额外数据,以每个文件为基础),然后直接流式传输到S3(使用亚马逊的多部分API) 。如果busboy通知您已达到文件大小限制,那么您只需删除刚刚流式传输到S3的部分文件。

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

两者各有优缺点,但由于multipart流的性质,实际上没有其他解决方案可以解决这个问题。