为什么node.js转换POST正文?

要在OpenShift中将JPG二进制体数据保存到文件系统。 但不知何故收到的信息将得到转换。 你知道为什么吗? node.js是否有可能将数据视为文本,并对其进行编码/解码?

 var myServer = http.createServer(function(request, response) { var data = ''; request.on('data', function (chunk){ data += chunk; }); request.on('end',function(){ var date = new Date(); var url_parts = url.parse(request.url,true); if(url_parts.pathname == '/setImage') { if(data != null && data.length > 0) { fs.writeFile('/var/lib/openshift/555dd1415973ca1660000085/app-root/data/asset/' + url_parts.query.filename, data, 'binary', function(err) { if (err) throw err console.log(date + ' File saved. ' + url_parts.query.filename + ' ' + data.length) response.writeHead(200) response.end() }) } } 

在这里输入图像描述

你正在用一个string初始化data ,所以添加chunk+=它会将块转换为string(这是受字符编码)。

相反,你应该把这些块作为Buffer的数组来收集,并使用Buffer.concat()来创build最终的Buffer:

 var chunks = []; request.on('data', function (chunk){ chunks.push(chunk); }); request.on('end', function() { var data = Buffer.concat(chunks); ... });