Есть ли лучший подход для чтения двоичного файла из ведра 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?