[英]In node.js, how do I get the Content-Length header in response to http.get()?
[英]Node.JS request data length is smaller than given in Content-Length
我的要求是多部分/表格数据
这就是我读取请求数据的方式:
var data = "";
this.request.on( "data" , function( chunk ){
data += chunk;
} );
this.request.on( "end" , function(){
this.request.body = this.parseRequest( data );
this.emit( "end" );
}.bind( this ) );
现在,请求的Content-Length
为25,981 ,但“结束”数据的长度为25,142 。
谁能解释一下?
问题在这里:
data += chunk;
缓冲区中的.toString()
方法损坏了二进制数据-这就是长度损失的来源。
两种解决方案:
.toString('binary')
,它将缓冲区转换为没有数据丢失的字符串(至少在我的测试中如此)。 我的代码现在:
var buffer = [];
this.request.on( "data" , function( chunk ){
buffer.push( chunk );
} );
this.request.on( "end" , function(){
buffer = Buffer.concat( buffer );
this.request.body = this.parseRequest( buffer.toString("binary") );
this.emit( "end" );
}.bind( this ) );
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.