返回拆分缓冲区的 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()
}
我正在将代码从 '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()
}