Socket.io,未打开服务器上保存的图像

时间:2018-12-17 17:07:08

标签: image server socket.io

我正在尝试从服务器上的画布保存图像,但是图像未打开(不支持格式)。

客户:

const canvas = document.getElementById('canvas');

var sendData = () => {
  const dataURL = canvas.toDataURL();

  socket.emit('sendImage', dataURL.toString('base64'));
};

服务器:

io.on('connection', function(socket) {
  socket.on('sendImage', (imageData) => {
    fs.writeFile(__dirname + '/image.png', imageData, function (err) 
  {
    if (err) throw err;
    console.log('It\'s saved!');
  });
});
});

1 个答案:

答案 0 :(得分:0)

我找到了解决方法。

客户:

dataURL.toString('base64')具有base64编码的数据,格式为

data:image / png; base64,/ 9j / 4AAQSkZJRgABA ... 因此,我们需要摆脱前面的mime类型和编码信息。

var sendData = () => {
  const dataURL = canvas.toDataURL().toString('base64');
  const toSend = dataURL.split(',')[1];

  socket.emit('sendImage', toSend);
};

服务器:

现在我们需要转换其缓冲区。

fs.writeFile(__dirname + '/image.png', Buffer.from(imageData, 'base64'), function 
  (err) {
    if (err) throw err;
    console.log('It\'s saved!');
  });