0

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

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

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

下面是我需要转换的输出缓冲区格式 在此处输入图像描述

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

在此处输入图像描述

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

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

你有什么主意吗?

4

1 回答 1

0

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

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

于 2020-07-24T12:15:02.553 回答