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

标签 javascript node.js socket.io

我正在使用 socket.io 编写一个游戏,在 HTML5 Canvas 上绘图,时间结束后将图像发送到 node.js 服务器。有什么方法可以将 Canvas 转换为图像,将 base64 中的图像发送到 node.js 应用程序,最后将其保存到服务器中?

最佳答案

是的,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);
  });
});

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

阅读有关 MDN documentation for the canvas element 的更多信息.

关于javascript - 将文件 base64 发送到 Node.js socket.io 服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23872730/

相关文章:

javascript - Socket.io-Stream 不发送给客户端

Redux Saga socket.io

javascript - 使用 Google Analytics 的 Vuejs 事件跟踪

javascript - javascript 与 java 的闭包

javascript - jquery中使用for循环删除索引,无法完全删除,为什么?

javascript - 将结果集值传递给 JavaScript 函数

javascript - 在nodejs中保存从url保存的图像时出现问题

node.js - Koa-router 忽略 Mongoose 的 async/await 并始终返回 404

javascript - 如何使用 typescript 和 webpack 创建单页 Web 应用程序?

node.js - 从 Socket.IO 中删除端口并更改目录