node.js - 使用 ExpressJS 将文件上传到 S3,同时限制文件大小

标签 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

最佳答案

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

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

两者都有各自的优点和缺点,但由于多部分流的性质,对于这个特定问题确实没有其他解决方案。

关于node.js - 使用 ExpressJS 将文件上传到 S3,同时限制文件大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26001054/

相关文章:

javascript - 当用作对象中的键时,两个不同的对象被视为相同

javascript - 在node.js中返回多个shell命令的结果

json - 通过 Cloudformation 在 S3 存储桶上创建 SQS 事件时,通知目标服务区域对于存储桶位置约束无效

node.js - Node.js+express+session

javascript - 如何使用 Express .listen()(在 Typescript 中)处理错误?

使用源代码行号调试 node.js

javascript - 如何在react中使用递归函数调用,返回一些数组?

amazon-web-services - 自定义来自 AWS Cloudwatch 的警报消息

amazon-web-services - 如何将 DBT 与 AWS Managed Airflow 结合使用?

node.js - NodeJS/Express 请求实体太大 - Heroku