我想将用户的文件上传到S3。我有一个 Web 客户端/NodeJS Express 解决方案。
到目前为止,在我的研究中,我发现使用分段上传,我可以执行以下任一操作:
1.) 如果直接使用管道启用流式传输,则 i cannot control the size of the file .
2.) 如果需要控制大小,则必须禁用管道/流,并且必须将文件写入磁盘或内存缓冲区以检查文件大小,然后将其传输到 S3。
有什么办法可以同时获得这两个吗?
我正在查看以下中间件:
最佳答案
至少使用busboy
,您可以设置各种请求范围的限制。因此,您可以为所有文件设置文件大小限制(或者通过自己进行计数并排出超过自定义文件大小限制的任何额外数据,在每个文件的基础上进行设置),然后直接流式传输到 S3(使用 Amazon 的多部分 API) 。如果 busboy
通知您已达到文件大小限制,那么您只需删除刚刚流式传输到 S3 的部分文件即可。
否则,就像你说的那样,先保存到磁盘,然后上传到S3。
两者都有各自的优点和缺点,但由于多部分
流的性质,对于这个特定问题确实没有其他解决方案。
关于node.js - 使用 ExpressJS 将文件上传到 S3,同时限制文件大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26001054/