无法将应用程序/八位字节流解析为节点 js 中的图像
Posted
技术标签:
【中文标题】无法将应用程序/八位字节流解析为节点 js 中的图像【英文标题】:unable to parse application/octet-stream into image in node js 【发布时间】:2021-03-14 04:19:38 【问题描述】:我是节点 js 的新手。我正在尝试进行休息 api 调用并获取图像并在本地存储/读取它以获取 exif 数据
app.post('/getEXIF', async function (pagereq, pageres)
try
var fs = require('fs');
let res = await superagent
.get('https://abcd.com/service')
.set("Content-Type", "application/json")
.set("Authorization", "Bearer mytokenvvvvvvvv")
.set("accept", "application/octet-stream")
.buffer(true).disableTLSCerts();
fs.writeFile('a.jpg',res.text,function (err)
if (err) return console.log(err);
);
catch(error)
console.log("error " + error);
);
它写入图像但不打开(不支持的格式)。我的最终目标是读取数据作为处理 EXIF 信息的缓冲区。我使用的所有 exif 库(EXIFR、EXIF、EXIFParser)说给定的输入不是图像、缓冲区或文件等。
我也无法先将响应数据保存为图像。如果能够将 octet-steam 解析为 buffer ,那么我可以从中写入或读取。
当我使用邮递员访问服务时,我可以将文件保存为 .jpeg 和图像作品。但原始内容是这样的(前几行)
����\x00\x10JFIF\x00\x01\x01\x00\x00\x01\x00\x01\x00\x00��\x00�\x00\t\x06\x07\x12\x13\x12 \x15\x13\x13\x13\x16\x16\x15\x15\x18\x19\x1A\x17\x18\x18\x19\x18\x1A\x1B\x1B\x1D\x1A\x18\x17\x1E\x1A \x18\x1A\x1D\x1A\x1E)!\x18\x1D%\x1D\x1D\x18!1"%*+...\x1A\x1F383,7(-.+\x01\n
感谢任何帮助
【问题讨论】:
【参考方案1】:我刚刚找到了我的解决方案。
function binaryParser(res, callback)
res.setEncoding('binary');
res.data = '';
res.on('data', function (chunk)
res.data += chunk;
);
res.on('end', function ()
callback(null, new Buffer(res.data, 'binary'));
);
var fs = require('fs');
let res = await superagent
.get('https://abcd.com?getEXIF')
.set("Content-Type", "application/json")
.set("Authorization", "Bearer sdfdsf")
.set("accept", "application/octet-stream")
.buffer()
.parse(binaryParser)
.end(function(err, res)
if (err)
pageres.send(err);
//binary response data is in res.body as a buffer
console.log("res=", res.body);
);
【讨论】:
以上是关于无法将应用程序/八位字节流解析为节点 js 中的图像的主要内容,如果未能解决你的问题,请参考以下文章
使用 PHP 或 Django 在 Apache 中重定向八位字节流