节点.JS请求数据长度小于内容长度中给出的数据长度
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 ) );
相关文章:
- 用程序搜索JQuery数据表中的文本
- 要求输入在数据列表中
- 正在将数据主题添加到所有项目
- 函数参数中的数据与指定变量之间的任何性能差异
- 在VanillaJS中模拟模型双向数据绑定
- CSS-如何定位内容数据标题
- 使用电话间隙在Android应用程序中显示SQL Lite的数据
- 无法在数据endVal中设置值=“”;{{ucount}}”;使用Angular JS的CountUp
- 序列化数据属性中对象的最可靠方法
- 如何将JSON数据导入我的ejs模板
- 不显示带有本地json文件数据的谷歌地图脚本
- 如何将json数据显示为html
- 画布数据到图像
- 使用jquery将mysql数据获取到新的表行中
- 使用html中的外部javascript进行数据验证
- 有时数据是't显示在浏览器中
- React中的数据集表示
- 节点.JS请求数据长度小于内容长度中给出的数据长度
- 折线图,当数据小于最小值时,在图内显示数据标签
- 如何设置输入的数据最小值和设置消息,如果值小于最小值