MMX*_*X11 0 javascript azure azure-storage node.js
我正在使用 JS sdk 与 Azure 存储进行交互。
我有一个看起来像的层次结构:演示(容器名称)/ ID // 文件列表
所以我试图获取特定子文件夹的文件列表。我认为 usinglistBlobsByHierarchy是要使用的,但我无法获得该特定文件夹的 blob 列表。
我的代码:
for await (const item of containerClient.listBlobsByHierarchy("/")) {
console.log(item, 'ITEM')
if (item.kind === "prefix") {
console.log(`\tBlobPrefix: ${item.name}`);
} else {
console.log(`\tBlobItem: name - ${item.name}, last modified - ${item.properties.lastModified}`);
}
}
Run Code Online (Sandbox Code Playgroud)
返回
{ kind: 'prefix', name: '5f09b7ab047f9804a861672d/' } ITEM
BlobPrefix: 5f09b7ab047f9804a861672d/
{ kind: 'prefix', name: '5f300119536cc32ce44c0013/' } ITEM
BlobPrefix: 5f300119536cc32ce44c0013/
{ kind: 'prefix', name: 'test/' } ITEM
BlobPrefix: test/
Run Code Online (Sandbox Code Playgroud)
例如,现在我想获取文件夹 5f09b7ab047f9804a861672d 中的文件列表
使用 azure 节点存储 sdk,我们可以使用 te 方法listBlobsFlat并listBlobsByHierarchy列出 blob。这两种方法有一些区别。该方法listBlobsFlat可以列出所有 blob。该方法listBlobsByHierarchy只能列出顶级文件夹和 blob,就像您在 C:/ 下运行“dir”一样。此外,如果您想列出子文件夹中的子 blob,我们需要使用prefix.
例如
我的容器结构如下
hello.txt
...
test
test.txt
test1
data.json
Run Code Online (Sandbox Code Playgroud)
代码(列出文件夹 test 中的 blob)
const {
BlobServiceClient,
StorageSharedKeyCredential,
} = require("@azure/storage-blob");
// Enter your storage account name and shared key
const account = "jimtestdiag924";
const accountKey ="";
// Use StorageSharedKeyCredential with storage account and account key
// StorageSharedKeyCredential is only available in Node.js runtime, not in browsers
const sharedKeyCredential = new StorageSharedKeyCredential(account, accountKey);
const blobServiceClient = new BlobServiceClient(
`https://${account}.blob.core.windows.net`,
sharedKeyCredential,
);
const containerName = "testupload";
async function listBlobs() {
const containerClient = await blobServiceClient.getContainerClient(
containerName,
);
console.log("list blobs with method listBlobsFlat");
let iter = containerClient.listBlobsFlat({ prefix: "test/" });
for await (const item of iter) {
console.log(`\tBlobItem: name - ${item.name}`);
}
console.log("list blobs with method listBlobsByHierarchy");
let iter1 = containerClient.listBlobsByHierarchy("/", { prefix: "test/" });
for await (const item of iter1) {
if (item.kind === "prefix") {
console.log(`\tBlobPrefix: ${item.name}`);
await listblob(containerClient, item.name);
} else {
console.log(`\tBlobItem: name - ${item.name}`);
}
}
}
async function listblob(containerClient, prefix) {
let iter1 = containerClient.listBlobsByHierarchy("/", { prefix: prefix });
for await (const item of iter1) {
if (item.kind === "prefix") {
console.log(`\tBlobPrefix: ${item.name}`);
} else {
console.log(`\tBlobItem: name - ${item.name}`);
}
}
}
listBlobs().catch((err) => {
console.error("Error running sample:", err.message);
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2269 次 |
| 最近记录: |