Node.js通过Express做的网站,允许用户上传文件,服务端将文件保存到OSS里面。
Node.js的OSS SDK用的是论坛帖子里面推荐的node-oss。
由于要处理大文件以及之后准备断点续传,因此使用的是Multipart方式。
在实际使用的时候发现,因为Express的Bodyparser会将上传的文件自动转存到服务端。这样的话,通过fs.createReadStream将转存的文件读取到readable,然后在通过SDK的方法upload.uploadPart可以正常保存。但是这么做的问题时不必要的磁盘IO,而且太多的转存文件会导致服务器性能和磁盘告警。于是打算直接将请求的文件Stream直接发送给OSS SDK。问题就出现在这里。我取消了Express默认的Bodyparser,手动使用Formidable来处理Request的内容,在onPart函数里面将part参数(文档说这个part也是一个readable stream)直接传递给upload.uploadPart,结果OSS返回[Error: socket hang up] code: 'ECONNRESET'。应该是OSS端关闭了我的Socket。
请问有谁知道这是为什么么?或者我如何能够联系到SDK的作者?谢谢。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。