gpt4 book ai didi

node.js - Azure:尝试获取 blob 内容时函数停止工作

转载 作者:太空宇宙 更新时间:2023-11-04 02:51:47 26 4
gpt4 key购买 nike

我正在使用 NodeJS 和 Azure 函数。我正在尝试获取 blob (pptx) 的内容,然后进一步处理该 pptx(使用 admzip 解压缩)。

但是,每当我尝试获取内容时,该函数都会停止,没有任何错误,并且在一段时间后超时。我尝试首先获取 blob 的属性(以检查 blob 是否存在)并且可行。

这是我的功能:

const storage = require('azure-storage');
const STORAGE_ACCOUNT_NAME = 'storage-account';
const ACCOUNT_ACCESS_KEY = 'storage-key';
let AdmZip = require('adm-zip');
let fs = require('file-system');

const blobService = storage.createBlobService(STORAGE_ACCOUNT_NAME, ACCOUNT_ACCESS_KEY);

module.exports = function (context, req) {
context.log('JavaScript HTTP trigger function processed a request.');
getBlobProperties('default-powerpoint', 'download.pptx').then((properties) => {
context.log('Properties: ', properties);
getBlobContent('default-powerpoint', 'download.pptx').then((content) => {
context.log('Blob Content: ', content);
})
});
};

function getBlobProperties(containerName, fileName) {
return new Promise((resolve, reject) => {
blobService.getBlobProperties(
containerName,
fileName,
function (err, properties, status) {
if (err) {
reject(err);
} else {
resolve(properties);
}
});
})
}

function getBlobContentAsStream(containerName, fileName, res) {
return new Promise((resolve, reject) => {
blobService.getBlobToStream(containerName, fileName, res, function (err, results) {
if (err) {
reject(err);
} else {
resolve(JSON.stringify(results, null, 2));
}
});
})
}

function getBlobContent(containerName, blobName) {
return new Promise((resolve, reject) => {
blobService.getBlobToText(
containerName,
blobName,
function (err, blobContent, blob) {
if (err) {
reject(err);
} else {
resolve({
'content': blobContent,
'blob': blob
});
}
});
})
}

如您所见,我尝试了 getBlobToStreamgetBlobToText,但结果相同。 getBlobProperties 工作正常,我获得了有关 blob 的所有信息,但没有获得内容。

任何人都可以帮我获取 blob 的内容吗?

编辑:

如果有人感兴趣的话,这是属性的输出:

BlobResult {
container: 'default-powerpoint',
name: 'download.pptx',
metadata: {},
lastModified: 'Wed, 14 Aug 2019 08:28:16 GMT',
creationTime: 'Wed, 14 Aug 2019 08:28:16 GMT',
etag: '"something"',
blobType: 'BlockBlob',
contentLength: '4658',
serverEncrypted: 'true',
requestId: 'someID',
contentSettings: { contentType: 'image/jpeg' },
lease: { status: 'unlocked', state: 'available' },
copy:
{ id: 'id123',
status: 'success',
source: 'sourceURL',
progress: '4658/4658',
bytesCopied: 4658,
totalBytes: 4658,
completionTime: 'Wed, 14 Aug 2019 08:28:16 GMT' } }

最佳答案

这是我在我的应用程序中使用的工作代码

  return new Promise(async r => {
bst.getBlobToText(containername, name, (err, text) => r(err ? null : text));
})

Full SourceCode

关于node.js - Azure:尝试获取 blob 内容时函数停止工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57491496/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com