将文件base64发送到Node.js socket.io服务器

时间:2014-05-26 14:48:24

标签: javascript node.js socket.io

我在HTML5画布中使用socket.io绘图编写游戏,当时间结束时,将图像发送到node.js服务器。有没有办法在图像中转换该画布,将base64中的图像发送到node.js应用程序,最后将其保存到服务器中?

1 个答案:

答案 0 :(得分:2)

是的,canvas元素提供了一个名为toDataURL()的方法。此方法返回data: URL,其中包含指定格式的图像的base64表示,或默认情况下为PNG:

var canvas = document.getElementsByTagName('canvas')[0];
var dataUrl = canvas.toDataURL();

假设您正在使用socket.io,您可以通过发出事件在套接字上发送此数据URI:

var socket = io.connect('http://localhost');
socket.emit('image', dataUrl);

在Node端,您可以在套接字上侦听此事件以检索图像:

io.sockets.on('connection', function (socket) {
  socket.on('image', function (dataUrl) {
    console.log(dataUrl);
  });
});

然后,您可以根据需要修剪前缀data:image/png;base64,并将内容上传到服务器。

详细了解MDN documentation for the canvas element