繁体   English   中英

Node.JS请求数据长度小于Content-Length中给出的长度

[英]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-Length25,981 ,但“结束”数据的长度为25,142

谁能解释一下?

问题在这里:

data += chunk;

缓冲区中的.toString()方法损坏了二进制数据-这就是长度损失的来源。

两种解决方案:

  1. 将块保留为缓冲区并使用它。
  2. 使用.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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM