无法将应用程序/八位字节流解析为节点 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 中重定向八位字节流

将字符串转换为应用程序/八位字节流 Java

在颤动中将应用程序/八位字节流转换为图像/jpeg/png?

文件上传错误“应用程序/八位字节流”

将八位字节流转换为图像

从手机上传文件发送应用程序/八位字节流