Как прочитать двоичный файл из ведра Google в nodejs? - PullRequest
0 голосов
/ 09 мая 2020

Есть ли лучший подход для чтения двоичного файла из ведра Google, я пытаюсь выполнить код ниже, но когда я пытаюсь прочитать файл из ведра и извлечь, я сталкиваюсь с проблемой незаконного смещения.

Я загрузил двоичный файл с расширением .tx вручную в ведро Fabriccerts. Мне нужно прочитать файл в облачной функции и извлечь его с помощью модуля fabrclient.

Ниже представлена ​​функция для чтения файла из корзины.

 const {Storage} = require('@google-cloud/storage');
    const storage = new Storage();
    async function getFileContent(fileName, bucketName) {
      const myBucket = storage.bucket(bucketName);
      const file = myBucket.file(fileName);
      const content = await file.download();
      return content;
    };

Ниже приведены инструкции из облачной функции, которую я пытаюсь извлечь двоичный файл с помощью fabri c -client module.

const Client = require('fabric-client');
    let envelope_bytes = await storage_util.getFileContent("channel.tx", "fabriccerts");
   console.log("file data" + envelope_bytes);
    let config_update = client.extractChannelConfig(envelope_bytes);
Error: Error: function terminated. Recommended action: inspect logs for termination reason. Details:
Illegal offset: 0 <= 1 (+1) <= 1

Есть ли какой-нибудь специальный c способ чтения двоичного файла? Нужно ли конвертировать файл после загрузки?

Я пробовал то же самое на машине ubuntu, сохраняя файл channel.tx в локальном каталоге, который работает нормально и отображается ниже после чтения файла:

    �
                                                                                                                                                               ����"     mychannel�
    �
            mychannel;)

    Application

    Org1MSP

    Org2MSP

    Consortium��

    Application�

    Org2MSP

    Org1MSP&
    Capabilities



    V1_4_2Admins""
    WritersAdmins""
    Admins

    AdminsAdmins""
    ReadersAdmins*Admins"

    Consortium
    SampleConsortium

Но когда я сохраняю тот же файл в корзине и прочтите файл, который он отображает, ниже данные:

    �  ����" mychannel� � mychannel;) Application Org1MSP� Org2MSP� Consortium��� Application� Org2MSP� Org1MSP�& Capabilities V1_4_2�Admins"" Writers  WritersAdmins"" Admins AdminsAdmins"" Readers  ReadersAdmins*Admins" Consortium SampleConsortium

Журналы ошибок:

RangeError: Illegal offset: 0 <= 1 (+1) <= 1 at ByteBuffer.module.exports.ByteBufferPrototype.readVarint32 (/srv/node_modules/bytebuffer/dist/bytebuffer-node.js:1540:23) at Message.ProtoBuf.Reflect.MessagePrototype.decode (/srv/node_modules/fabric-client/node_modules/protobufjs/dist/protobuf.js:3237:36) at Function.Message.decode (/srv/node_modules/fabric-client/node_modules/protobufjs/dist/protobuf.js:2952:37) at Client.extractChannelConfig (/srv/node_modules/fabric-client/lib/Client.js:660:42) at Object.exports.createChannel (/srv/chainmanagement/channel-management.js:36:30) at <anonymous> at process._tickDomainCallback (internal/process/next_tick.js:229:7)

Нужно ли нам сообщать об ошибке в Google?

...