为了账号安全,请及时绑定邮箱和手机立即绑定

这是个什么问题?没毛病啊感觉

这是个什么问题?没毛病啊感觉

慕慕森 2018-09-06 13:10:43
查看完整描述

1 回答

?
MYYA

TA贡献1868条经验 获得超4个赞

1.直接的bug就是1楼的同学说的
2.但是你在读文件的时候没用到流,所以我觉得你可以直接使用_this.res.end(data)可以避免你的问题
3.从你的代码中读出来几点意见给你

  • fs.exists(path, callback)这个方法很早就已经Deprecated了,所以也不推荐你使用,用 fs.lstat() or fs.access()代替吧!

  • 既然你想用write,那你读文件的时候就可以用流去读,这样如果是一个超大的文件的话,你就可以流式读取的方式读出来,你现在readFile,然后直接write,最后end,还是一次性把文件内容读到内存中,对于大文件来说还是体验很差,推荐使用下面的代码尝试一下

  const filePath=path.join(__dirname, 'xxxx.json')
  fs.lstat(filePath, (err, stats) => {    if(err) return res.status(500).end('file is not founded')
    res.writeHead(200, {      'Content-Type' : 'application/json',
    })
    const readStream = fs.createReadStream(filePath)
    readStream.on('end', () => {
      res.end()
    })
    readStream.on('error', (error) => {
      res.end(`read file stream error ${error.message}`)
    })
    readStream.pipe(res)
  })

随手写了一些, 你可以进行优化,打日志,或者用async解决callback hell问题等,还有头类型,返回的错误信息等,不过核心的流式吐出的代码应该没问题,仅供参考,希望对你有帮助


查看完整回答
反对 回复 2018-10-06
  • 1 回答
  • 0 关注
  • 526 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号