2014-09-23 68 views
1

我想将用户的文件上传到S3。我有一个Web客户端/ NodeJS Express解决方案。使用ExpressJS限制文件大小时将流文件上传到S3

所以,在我的研究到目前为止我发现,使用多上传,我可以做的两者之一:如果流启用直接使用管道,然后i cannot control the size of the file

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

有没有什么办法可以得到这两个?

我在看下面的中间制品:

busboy

multiparty

multer

formidable

+0

[s3上传流](https://github.com/nathanpeck/s3-upload-stream)模块? – 2014-09-23 17:32:25

回答

1

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

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

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