Sar*_*lla 5 javascript buffer fs node.js
我正在接收二进制流中的图像,如下所示,但是当我尝试使用以下数据创建缓冲区时,缓冲区似乎为空。问题是缓冲区不理解这种格式吗?
\n\n\n\n\nV\xef\xbf\xbdq)\xef\xbf\xbdEB\\u001599!F":"\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\\u000b\ xef\xbf\xbd\xef\xbf\xbd3\xef\xbf\xbd\xef\xbf\xbd5%\xef\xbf\xbdL\xef\xbf\xbd\\u0018\xef\xbf\xbd\xef\xbf\ xbdpO^::\xef\xbf\xbd~\xef\xbf\xbd\xef\xbf\xbdm\xef\xbf\xbd<\\u001e\xef\xbf\xbd\xef\xbf\xbdL\xef\xbf\ xbd\xef\xbf\xbdk\xef\xbf\xbd%G\xef\xbf\xbd$b\\u0003\\u0011\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd=q\ xef\xbf\xbdV=\xef\xbf\xbd\xef\xbf\xbdA\\u0018\xef\xbf\xbd\xef\xbf\xbdO\xef\xbf\xbd\xef\xbf\xbdU\xef\xbf\ xbd\xef\xbf\xbd\xef\xbf\xbdm\xef\xbf\xbdB\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\\u00038\xef\xbf\xbd\xef\xbf \xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd0a\xef\xbf\xbd_\xef\xbf\xbd\xef\xbf\xbd#\\u001b\xef\xbf\xbd\xef \xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\\f\xef\xbf\xbd\xef\xbf\xbd(\xef\xbf\xbd3\xef\xbf\xbd\\u0003\xef\ xbf\xbd\xef\xbf\xbd\xef\xbf\xbdnGjr\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbdMt\\\xef\xbf\xbd\\u0014g\xef\xbf\xbd \xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd~\xef\xbf\xbd#\xef\xbf\xbdQ\xef\xbf\xbd\xef\xbf\xbd\ng\xef\xbf \xbdK\xef\xbf\xbd\xef\xbf\xbds\xef\xbf\xbd\xef\xbf\xbd@C\xef\xbf\xbd\xef\xbf\xbd\\u001cS\xef\xbf\xbd` \\u000bps\xef\xbf\xbdGnzq\xef\xbf\xbdRg\xef\xbf\xbd\\fu\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbdC\\u0015\xef\xbf\ xbd\\u001d3\xef\xbf\xbdE.BI\\u0007\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd
\n
var buffer = new Buffer(req.body, \'binary\')\n console.log("BUFFER:" + buffer)\nfs.writeFile(\'test.jpg\', buffer, function(err,written){\n if(err) console.log(err);\n else {\n console.log("Successfully written");\n }\n});\nRun Code Online (Sandbox Code Playgroud)\n
问题是 body-parser 无法解析 content-type: octet-stream 并且我重写了标头以将其解析为 url 编码形式,即使我能够记录 req.body,缓冲区也无法理解该形式。下面的中间件允许解析内容类型:正文解析器的八位字节流。
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();
});
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
26469 次 |
| 最近记录: |