【问题标题】:node.js node-red - Converto Base64 string to uint8arraynode.js node-red - 将 Base64 字符串转换为 uint8array
【发布时间】:2020-07-24 11:30:13
【问题描述】:

我正在使用 Node Red 来实现 Web 服务,我正在绞尽脑汁将 base64 字符串转换为字节数组(uint8array)或将缓冲区转换为 uint8array。

我的红色节点流的一个“节点”将图像输出为缓冲区或 base64 字符串。 我需要将响应的图像传递到需要 uint8array 基础图像的 Web 服务中。

使用 atob 和 btoa 的答案很多,但是 node red 不支持。

下面是我需要转换的输出缓冲区格式

这就是我想要的缓冲区格式:

这是我要调用的网络服务的文档:

https://demous-cdb.thereforeonline.com/theservice/v0001/restun/help/operations/CreateDocument

我尝试了很多方法:

function toArrayBuffer(myBuf) {
   var myBuffer = new ArrayBuffer(myBuf.length);
   var res = new Uint8Array(myBuffer);
   for (var i = 0; i < myBuf.length; ++i) {
      res[i] = myBuf[i];
   }
   return myBuffer;
}

=====

也试过用...

var buf = Buffer.from(b64string, 'base64')

上面的解决方案没有生成一个uint8array

你有什么想法吗?

【问题讨论】:

    标签: node.js buffer node-red uint8array tobase64string


    【解决方案1】:

    base64 节点 (https://flows.nodered.org/node/node-red-node-base64) 应该将 base64 转换为缓冲区,然后您可以将其用作您用于发送到 Web 服务的任何节点的输入。

    NodeJS Buffer 是 Uint8Array 的子类,它们只是表示字节集合的方式。

    【讨论】:

    • 嗨,hardillib,感谢您的及时回复... base64 节点完全执行命令Buffer.from(b64string, 'base64')。输出是附加打印屏幕 1 的缓冲区类型,但我需要一个数组缓冲区,如打印屏幕 2 所示。
    • 您能否编辑问题以包含指向您尝试调用的 Web 服务的实际文档的链接。
    • @hardillib Edited... 我指的是 node-red-contrib-image-tools 节点link 的缓冲区。如附图。你有什么主意吗?非常感谢您的帮助
    猜你喜欢
    • 1970-01-01
    • 2020-03-28
    • 2021-11-09
    • 2021-12-12
    • 1970-01-01
    • 2017-01-06
    • 2016-08-11
    • 2014-05-10
    • 2017-07-28
    相关资源
    最近更新 更多