从混合Buffer获取原始二进制文件

时间:2017-05-16 19:48:37

标签: javascript node.js buffer

拥有以下nodeJS Buffer()。toString(' utf8')

Content-Type: audio/x-ms-wma
Content-Disposition: form-data; name=recordedAudio
\r\n\r\n0&�u�f�\u0011��\u0000�

我需要删除标题(Content-Type / Disposition)并获取原始音频数据。如果我只是用replace方法替换标头,我就无法将UTF-8音频正确地转换回缓冲区

怎么做?

2 个答案:

答案 0 :(得分:0)

最好不要在这里转换为字符串。要在缓冲区内对\r\n\r\n进行缓冲区搜索,然后从该点开始切片。

例如:

var buf = ...;
var body = null;
for (var i=3; i<buf.length; ++i)
{
    if (buf[i]=='\n' && buf[i-1]=='\r' && buf[i-2]=='\n' && buf[i-3]=='\r')
    {
        body = buf.slice(i);
        break;
    }
}

请记住,body将引用与缓冲区相同的内存(例如,没有复制内存)。

答案 1 :(得分:0)

我使用buffer-split软件包开始工作:

var bsplit = require('buffer-split');        
var rawData = bsplit(rawDataWithHeaders, new Buffer('\r\n\r\n'))[1];
rawData = bsplit(rawData, new Buffer('\r\n'))[0];