gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-03 22:46:22 25 4
gpt4 key购买 nike

想要将 JPG 二进制正文数据保存到 OpenShift 中的文件系统。但不知何故收到的信息会被转换。你知道为什么吗? 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()
})
}
}

enter image description here

最佳答案

您正在使用字符串初始化 data,因此使用 += 添加 chunk 也会将 block 转换为字符串(受字符编码限制)。

相反,您应该将 block 收集为 Buffer 数组并使用 Buffer.concat()创建最终的缓冲区:

var chunks = [];

request.on('data', function (chunk){
chunks.push(chunk);
});

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

关于node.js - 为什么node.js要转换POST正文?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37486019/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com