返回拆分缓冲区的 Nodejs Http 请求 - 无法在前端显示图像

Nodejs Http Request returning a split buffer - unable to display image in the Frontend

我正在将代码从 'request' 重写为 'http',因为支持结束了。我很确定我的问题出在编码上。在 http.request 我得到 d as Buffer 但有多个实例。如果我提取第一个,它只加载图像的一部分,但我无法将它们组合起来。如果我像我在这里做的那样合并数据,内容类型就会丢失,我无法显示它。我也尝试在 header 中设置 content-type 但是如果我没有得到 png 怎么办。

    if(req.Encoding === 'binary'){
       Header = {
         "Accept-Encoding": "deflate",
         "encoding": "null",
       }
     }
     const options = {
       hostname: GlobalConfigModel.AS400Host,
       port: Number(GlobalConfigModel.AS400Port),
       path: Path,
       method: req.Method,
       headers: Header,
     }

     let mdl = new RestResponseModel()

     // GET METHOD
     if(req.Method === 'GET'){
       http.request(options, res => {
         var data: any = []
         res.on('data', d => {
             data += d
             mdl.Data = Buffer.from(data);
         })
         res.on('end', () => {
           resume(mdl)
         })
       }).end()
     }

我的错误是没有完全理解 http 请求语法,请求的 'data' 部分应该只读取数据并将其推送到变量中。之后,将数据解析为所需格式的逻辑应该在语句

的 on 'end' 部分完成
      if(req.Method === 'GET'){
        http.request(options, res => {
          var chunkBuffer: any = []
          var type: any
          res.on('data', chunk => {
            chunkBuffer.push(chunk)
          })
          res.on('end', () => {
            let dataBuffer = Buffer.concat(chunkBuffer)
            if( req.Encoding === 'utf8'){
              var stringBuffer = dataBuffer.toString('utf8')
              mdl.Data = JSON.parse(stringBuffer)
            } else{
              mdl.Data = dataBuffer
            }
            resume(mdl)
          })
        }).end()
      }