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 - 如何将超链接添加到表格行 <tr>

php - 如何实现富文本编辑器,并在文本内的任意位置添加可上传的图像

javascript - 如何在 JS 中使用三元运算符返回值?

javascript - 将socket.io客户端指向heroku服务

javascript - 如何在同一个 Visual Studio 项目中混合使用 Node.js 和 Typescript?

node.js - 如何标记多个MongoDB文档进行处理?

javascript - 执行 expo init 命令时出现以下错误

javascript - Node 将 HTML 表达为 PDF

javascript - 什么可能导致socket.io服务时间过长?

ios - SocketRocket 在 connectionDidFinishLoading 后崩溃