如何将二进制缓冲区解码为node.js中的图像?

我收到一个二进制stream如下图所示的图像,但是当我尝试创build一个缓冲区与下面的数据缓冲区看起来是空的。 问题缓冲区不理解这种格式?

VQ)EB \ u001599˚F! “:” \ u000b35%L \ u0018pO ^ ::〜米<\ u001eL ķ%G $ b \ U0003 \ u0011 = QV = A \ u0018OUmB \ u000380a_ #\u001b \f ( 3 \u0003 nGjr Mt\ \u0014g 〜 # Q g K s @C \ u001cS` \ u000bpsGnzqRg \ FUC \ u0015 \ u001d3E.BI \ u0007

var buffer = new Buffer(req.body, 'binary') console.log("BUFFER:" + buffer) fs.writeFile('test.jpg', buffer, function(err,written){ if(err) console.log(err); else { console.log("Successfully written"); } }); 

我想你应该设置编码,当你调用fs.writeFile像这样:

 fs.writeFile('test.jpg', buffer, 'binary', function(err) { 

问题是body-parser不parsingcontent-type:octet-stream,我正在重写头文件,将其parsing为缓冲区不理解的url编码forms,即使我能够loggingreq.body 。 下面的中间件允许parsingbody-parser的content-type:octet-stream。

 app.use(function(req, res, next) { var contentType = req.headers['content-type'] || '' var mime = contentType.split(';')[0]; // Only use this middleware for content-type: application/octet-stream if(mime != 'application/octet-stream') { return next(); } var data = ''; req.setEncoding('binary'); req.on('data', function(chunk) { data += chunk; }); req.on('end', function() { req.rawBody = data; next(); }); });