NodeJS对POST进行拼合或拦截 NodeJS有一个非常好 - Assbbs

NodeJS对POST进行拼合或拦截 NodeJS有一个非常好的特性,就是POST数据是以分段Buffer传入的,每段最大65536字节,也就是64KB。 有两个监听事件分别是:'data'和'end','data'是每接收一个Buffer片段就调用,'end'是全部Buffer接收完毕后调用。 let body = ; let size = 0; requ…

NodeJS对POST进行拼合或拦截 NodeJS有一个非常好的特性,就是POST数据是以分段Buffer传入的,每段最大65536字节,也就是64KB。 有两个监听事件分别是:'data'和'end','data'是每接收一个Buffer片段就调用,'end'是全部Buffer接收完毕后调用。 let body = ; let size = 0; request.on 'data', function part { size += part.length; //这里可以放置拦截器 body.push part ; } ; request.on 'end', function { //接收完毕的操作,这里都Buffer进行解析和读取。 } ; 通过这两个事件,可以很方便地在过程中放置拦截器,如果已接收Buffer过大则拦截,这样NodeJS会停止接收数据。 在接收结束后,要对Buffer进行解析,如果传入的是form表单则要用.toString 转化为字符串,如果是JSON则JSON.parse 网上教程比较坑的一点是把body.push写成了 body+=,这种情况会造成写入Buffer与原始数据不一致,接收到的文件损坏。