nodejs中 如何将readStream实例转base64

  fileToBase64 (pathOrReadStream) {
    let data
    if (typeof pathOrReadStream === 'string') {
      data = fs.createReadStream(pathOrReadStream)
    } else {
      data = pathOrReadStream
    }
    const instance = new Buffer(data)
    const base64 = instance.toString('base64')
    return base6464
    // const base64 = `data:image/png;base64,${data}}`
    // return base64
  },

以上代码, 如何修改

阅读 6.1k
1 个回答

TS写的,差不多意思

const stream2buffer = (stream: NodeJS.ReadableStream): Promise<Buffer> => {
  return new Promise((resolve, reject) => {
    if (!stream.readable) return resolve(Buffer.concat([]))
     
    const bufs: any = []

    const onData = (d: any) => bufs.push(d)

    const onEnd = (error: any) => {
      error ? reject(error) : resolve(Buffer.concat(bufs))
      clean()
    }
      
    const onClose = () => {
      resolve(Buffer.concat(bufs))
      clean()
    }

    const clean = () => {
      stream.removeListener('data', onData)
      stream.removeListener('end', onEnd)
      stream.removeListener('error', onEnd)
      stream.removeListener('close', onClose)
    }
      
    stream.on('data', onData)
    stream.on('end', onEnd)
    stream.on('error', onEnd)
    stream.on('close', onClose)
  })
}
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题