在我的服务器中,我收到了有关多部分表单数据的POST请求,在其中收到了PNG图像文件。我使用Buffer.slice()来获取原始的PNG图像。但是在尝试格式化的Buffer时,我发现:
console.log(requestBody.compare(Buffer.from(requestBody.toString('base64'))));
此语句返回-1。 (这里requestBody是格式化程序图像缓冲区)
我的疑问是该语句是否不应该返回0,因为我将同一缓冲区转换为字符串,然后又转换为缓冲区?
我的代码:
const http = require('http');
const fs = require('fs');
const qs = require('querystring');
const path = require('path');
http.createServer(function ( request, response ) {
if ( request.method == 'GET' ) {
fs.readFile('./views/index.html', function ( error, data ) {
response.writeHead(200, {'Content-Type':'text/html'});
response.end(data);
});
} else if ( request.method == 'POST' ) {
let requestBody = null;
request.on('data', function( data ) {
if ( requestBody == null ) {
requestBody = data;
} else {
requestBody += data;
}
});
request.on('end', function( data) {
requestBody = Buffer.from(requestBody.slice(requestBody.indexOf('image/png') + 13, requestBody.lastIndexOf('------')-1));
console.log(requestBody.compare(Buffer.from(requestBody.toString('base64'))));
response.writeHead(200, {'Content-Type':'image/png'});
response.end(requestBody);
});
}
}).listen(3000);