在NodeJS中检查路径中是否存在一个blob

3
假设我想在一个容器(azureblob)中上传一个blob-> 路径:123/human/a.json 我想检查路径123/human/下是否存在任何blob。
我找不到任何好的资源来解决这个问题。
在c#中找到了这个资源How to check wether a CloudBlobDirectory exists or not? 但是在Node中没有找到任何东西。

希望这能帮到你:https://learn.microsoft.com/en-us/azure/storage/blobs/storage-quickstart-blobs-nodejs - Jayendran
你想要检查一个目录中特定的 blob 是否存在,还是任何 blob 是否存在? - Gaurav Mantri
目录中的任何二进制大对象 - Nafis Islam
2个回答

4
如果你只想检查虚拟目录中是否存在任何的 Blob,你可以使用 SDK 中的 listBlobsSegmentedWithPrefix 方法来尝试列出 Blob。如果你获得的结果数量大于零,那么这意味着该目录中存在 Blob。例如,看一下下面的示例代码:
blobService.listBlobsSegmentedWithPrefix('azureblob', '123/human/', null, {
  delimiter: '',
  maxReults: 1
}, function(error, result) {
  if (!error) {
    const entries = result.entries;
    if (entries.length > 0) {
      console.log('Blobs exist in directory...');
    } else {
      console.log('No blobs exist in directory...');
    }
  }
});

如果您想要在虚拟目录中查找特定 blob 的存在性,可以直接使用 SDK 的 doesBlobExist 方法。例如,看一下以下示例代码:
blobService.doesBlobExist('azureblob', '123/human/a.json', function(error, result) {
  if (!error) {
    if (result.exists) {
      console.log('Blob exists...');
    } else {
      console.log('Blob does not exist...');
    }
  }
});

你能以同步的方式完成这个吗? - Fábio Zangirolami

0

由于 doesBlobExist 返回一个 Promise,您可以尝试以下实现:

**

export async function doesBlobExist(
  connectionString,
  containerName,
  blobFileName
): Promise<boolean> {
  const promise: Promise<boolean> = new Promise((resolve, reject) => {
    try {
      const blobService = azure.createBlobService(connectionString);
      
      blobService.doesBlobExist(containerName, blobFileName, function (
        error,
        result
      ) {
        if (!error) {
          resolve(result.exists);
        } else {
          reject(error);
        }
      });
    } catch (err) {
      reject(new Error(err));
    }
  });
  return promise;
}

**


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接