无法将图像缓冲区转换为base64字符串

时间:2020-05-23 07:49:11

标签: node.js buffer png

在我的服务器中,我收到了有关多部分表单数据的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);

0 个答案:

没有答案