You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用为指定目录生成的SAS令牌列出Blob存储中的目录内容

基于目录SAS令牌列出Azure Blob存储指定目录文件的实现方案

方法1:通过已有的DataLakeDirectoryClient实现

你已经持有DataLakeDirectoryClient实例的情况下,不需要额外构造DataLakeFileSystemClient,有两种可选方式:

  • 直接取实例的fileSystemClient属性即可获取对应容器的DataLakeFileSystemClient实例
  • 更简便的是直接调用DataLakeDirectoryClient的listPaths方法,直接列出当前目录下的所有文件,不需要跳转至容器实例

代码示例:

// 前置依赖安装命令:`npm install @azure/storage-file-datalake`
import { DataLakeDirectoryClient } from "@azure/storage-file-datalake";

// 入参为你已初始化完成的DataLakeDirectoryClient实例
const listAllFilesInDirectory = async (directoryClient) => {
  // 若确实需要获取DataLakeFileSystemClient,直接取实例属性即可
  const fileSystemClient = directoryClient.fileSystemClient;
  console.log("对应容器名称:", fileSystemClient.name);

  const result = [];
  // recursive设为false仅列出当前目录层级,设为true会递归遍历所有子目录
  for await (const pathItem of directoryClient.listPaths({ recursive: false })) {
    // 过滤掉子目录,仅保留文件
    if (!pathItem.isDirectory) {
      result.push({
        fileName: pathItem.name.split("/").pop(),
        fullPath: pathItem.name,
        fileSize: pathItem.contentLength
      });
    }
  }
  return result;
}

方法2:通过目录SAS URL构造所需实例

如果你仅持有目录的SAS URL,可按如下方式解析构造出所需的客户端实例:

import { DataLakeFileSystemClient, DataLakeDirectoryClient } from "@azure/storage-file-datalake";

// 入参格式示例:https://myaccount.dfs.core.windows.net/mycontainer/mydirectory{sastoken}
const generateClientsFromSasUrl = (directorySasUrl) => {
  const urlObj = new URL(directorySasUrl);
  const sasToken = urlObj.search;
  const pathSegments = urlObj.pathname.split("/").filter(Boolean);
  const fileSystemName = pathSegments[0];
  const accountEndpoint = `${urlObj.protocol}//${urlObj.host}`;

  // 构造DataLakeFileSystemClient
  const fileSystemClient = new DataLakeFileSystemClient(
    `${accountEndpoint}/${fileSystemName}${sasToken}`
  );

  // 也可以直接构造DataLakeDirectoryClient供后续使用
  const directoryClient = new DataLakeDirectoryClient(directorySasUrl);

  return { fileSystemClient, directoryClient };
}

注意:生成目录SAS令牌时必须授予列表权限,否则调用查询接口会返回403权限错误。

内容的提问来源于stack exchange,提问作者Elizabeth Fransen

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.08 03:00:00