使用节点AWS SDK S3.upload方法由于某种原因未完成多部分上传。
从浏览器接收上传的可读流设置为Body
(可读流可以通过管道传输到文件writableStream而没有任何问题)。
S3.upload被赋予以下选项对象:
{
partSize: 1024*1024*5,
queueSize: 1
}
当尝试上传~8.5mb的文件时,该文件完全从浏览器发送,但是从S3.upload返回的请求不断触发' httpUploadProgress'指示已上载所有字节的事件。不断收到以下内容,直到发生错误:
progress { loaded: 8832825,
total: 8832825,
part: 1,
key: 'c82d3ef1-5d95-47df-aaa9-2cee48afd702' }
progress { loaded: 8832825,
total: 8832825,
part: 1,
key: 'c82d3ef1-5d95-47df-aaa9-2cee48afd702' }
progress { loaded: 8832825,
total: 8832825,
part: 1,
key: 'c82d3ef1-5d95-47df-aaa9-2cee48afd702' }
RequestTimeout: Your socket connection to the server was not read from
or written to within the timeout period. Idle connections will be
closed.
进度加载字段显示已加载总字节数,但上传永远不会完成。即使是可读流上的end
事件也会触发。
SDK本身的控制台日志记录显示,即使部件大小设置为5mb且队列大小设置为1,S3.upload也会消耗可读流中的所有可用数据。
部件大小和队列大小是否会影响S3.upload的正确使用?如何进一步调查此问题?