node接收上传的文件流只能接收一部分?

问题描述

前端上传excel文件,后端接收并处理文件

相关代码

// 请把代码文本粘贴到下方(请勿用图片代替代码)

async importMember() {
   
    const stream = await this.ctx.getFileStream();
    
    stream.on('data',() =>{
        //这里只执行一次左右 有时候两次 chunk加起来的大小也不对
    })
    
    stream.on('end',() =>{
        //这里不触发
    })
   
    stream.on('error',()=>{
        //这里也不触发
    })
  }

你期待的结果是什么?实际看到的错误信息又是什么?

data事件应该执行完全,stream接收完成后应该触发end事件,即使有错误,应该触发error事件。

找了一天 怀疑是环境问题,nginx那边限制也打开了,还是没用。。
请求大神帮忙解析

阅读 2.3k
1 个回答

已经解决了,问题让人哭笑不得。

这里提醒后面可能遇到这个问题的人:

一定要保证streamnode端接收完成后才能在controller里返回值,不然会认为该http访问结束,从而导致上传的文件流中途结束。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题