资讯动态

ToolJet 连接 Azure Blob Storage:数据源配置与六大操作实战指南

发布时间:2026/9/12 14:40:50 来源:尧图企业网站定制
ToolJet 连接 Azure Blob Storage数据源配置与六大操作实战指南【免费下载链接】ToolJetOpen-source foundation of ToolJet AI - the enterprise app generation platform for internal tools, dashboards, business applications, workflows and AI agents. Build visually, from a prompt, or from Claude Code, Codex and Cursor over MCP 项目地址: https://gitcode.com/GitHub_Trending/to/ToolJet本指南围绕 ToolJet3.0.0-LTS内置的Azure Blob Storage 数据源系统讲解从连接串配置、查询创建流程到容器/Blob 增删查的六种操作与全部参数语义并结合仓库内插件源码plugins/packages/azureblobstorage剖析每个操作底层的 Azure SDK 调用方式。读完本文你将能在 ToolJet 查询面板中完整地对 Azure Blob 进行容器创建、列举与 Blob 上传、读取、删除等读写管理。一、数据源概览Azure Blob Storage 是微软提供的海量对象存储服务适合存放文件、图片、文档等大型非结构化数据。ToolJet 将其封装为内置数据源插件用于在低代码应用中读取与存储大对象例如在内部工具中上传附件、读取报表文件或按目录前缀检索对象。插件在仓库中的完整实现位于 plugins/packages/azureblobstorage其manifest.json声明数据源类型为cloud-storage核心依赖为官方 SDK azure/storage-blob版本^12.12.0。二、建立连接Connection String 认证与 Azure Blob 建立连接只需要一项凭据Connection String连接字符串你可以在 Azure 门户的存储账户 →“访问密钥”页面获取该字符串其典型形如DefaultEndpointsProtocolhttps;AccountNameyourstorageaccount;AccountKeyxxxxxxxxxxxx;EndpointSuffixcore.windows.net两种添加入口点击查询面板上的 Add new Data source按钮在数据源列表中选择Azure Blob或从 ToolJet 仪表盘进入Data Sources页面添加。源码视角连接如何建立插件的连接测试与查询执行共用同一套连接逻辑。核心类Azureblobstorageplugins/packages/azureblobstorage/lib/index.ts通过BlobServiceClient.fromConnectionString()将用户填写的连接字符串直接构造为 Azure SDK 的 Blob 服务客户端async getConnection(sourceOptions: SourceOptions): Promiseany { const blobServiceClient BlobServiceClient.fromConnectionString(sourceOptions.connection_string); return blobServiceClient; }manifest.json中将connection_string声明为必填项required数组并暴露isLoading、data、rawData三个查询结果变量plugins/packages/azureblobstorage/lib/manifest.json。testConnection方法index.ts会实际调用一次listContainers来验证凭据有效性因此保存数据源时 ToolJet 能立即反馈连接是否成功。连接测试会真实访问你的存储账户请确保网络可达且连接串权限足够至少具备列表权限。三、发起查询的通用流程在编辑器中执行 Azure Blob 查询的步骤与 ToolJet 其他数据源一致点击编辑器底部查询管理器中的 Add按钮选择上一步添加好的Azure Blob数据源从操作下拉框中选择目标operation并填写对应参数所有参数均支持代码提示与绑定表达式点击Preview预览输出或点击Run实际执行查询。:::tip 查询结果可以使用Transformations数据转换进行二次加工具体可参考官方文档 Transformations。 :::插件入口run方法index.ts依据queryOptions.operation通过switch分发到六种操作实现统一返回{ status: ok, data: result }执行出错时抛出QueryError错误信息会回显在查询面板中。四、支持的六种操作详解操作列表由 operations.json 中的下拉选项定义类型枚举见 types.ts操作枚举值用途Create containercreate_container新建容器List containerslist_containers列出存储账户下所有容器List blobslist_blobs列出某容器内的 Blob支持分页Upload blobupload_blob上传新 Blob 或覆盖已有 BlobRead blobread_blob读取指定 Blob 的内容Delete blobdelete_blob删除指定 Blob1. Create Container创建容器创建新的容器。容器是 Azure Blob 中组织与管理数据的逻辑单元容器名必须全局唯一同一存储账户内若同名容器已存在操作会失败。必填参数Container Name容器名底层实现operations.ts通过blobServiceClient.getContainerClient(containerName)获取容器客户端后调用containerClient.create()。你可以在创建前先用 List containers 操作检查名称是否已被占用。2. List Containers列出容器返回存储账户下的全部容器列表。该操作无需任何参数。源码operations.ts调用blobServiceClient.listContainers()并迭代聚合所有容器名const options { includeDeleted: false, includeMetadata: true, includeSystem: true, prefix: , }; for await (const containerItem of blobServiceClient.listContainers(options)) { containers.push(containerItem.name); }返回结果为字符串数组可直接用于下拉框选项或表格渲染。3. List Blobs列出 Blob列出指定容器内的所有 Blob支持分页与前缀过滤。必填参数Container目标容器名Page Size每页返回的最大 Blob 数量源码中以parseInt(maxPageSize)传入maxPageSize配置可选参数Prefix只返回名称以该前缀开头的 Blob对应 Azure 的目录式过滤如images/Continuation Token分页续传令牌——把上一页返回的continuationToken传入即可获取下一页数据源码operations.ts使用containerClient.listBlobsFlat(listOptions).byPage(paginationConfig)拉取单页数据并为每个 Blob 附加url字段通过blobClient.url生成const paginationConfig { maxPageSize: parseInt(maxPageSize), ...(continuationToken { continuationToken }), }; const iterator containerClient.listBlobsFlat(listOptions).byPage(paginationConfig); const response (await iterator.next()).value; const blobs { result: [], continuationToken: response.continuationToken }; for (const blob of response.segment.blobItems) { blobs.result.push({ ...blob, url: getBlobClient(containerClient, blob.name).url }); }返回结构为{ result: [...], continuationToken: ... }。实战要点若continuationToken非空说明还有更多数据可将该值绑定到下一次查询的 Continuation Token 参数实现“加载更多”分页同时注意listBlobsFlat默认附加了includeMetadata: true、includeTags: trueBlob 的元数据与标签会一并返回。4. Upload Blob上传 Blob上传新 Blob 或覆盖更新容器中已有的 Blob适合存储文件、图片、文档等内容。必填参数Container目标容器名Blob NameBlob 名称可含虚拟目录路径如reports/2026/01.csvContent TypeMIME 类型如text/plain、application/json、image/pngUpload Data要上传的内容支持绑定组件数据或查询结果Encoding内容编码默认utf8源码实现operations.ts先将上传数据通过Buffer.from(options.data)转为二进制再调用块 Blob 的uploadDataconst blobOptions { blobHTTPHeaders: { blobContentType: options.contentType, blobContentEncoding: options.encoding || utf8, }, }; const file Buffer.from(options.data); const uploadBlobResponse await blockBlobClient.uploadData(file, blobOptions); return Blob was uploaded successfully. requestId: ${uploadBlobResponse.requestId};成功时返回包含requestId的确认信息Content-Type与Encoding会作为 Blob 的 HTTP 头写入读取方据此正确解析内容。由于 SDK 的uploadData对同名 Blob 默认执行覆盖该操作天然支持“更新已有 Blob”场景。5. Read Blob读取 Blob读取指定 Blob 的文本内容便于在应用中展示文件内容或交给下游查询处理。必填参数Container容器名Blob Name要读取的 Blob 名称源码operations.ts通过blobClient.download()拿到可读流再用内部的streamToBuffer辅助函数将流拼接为 Buffer 并.toString()转为字符串返回。因此该操作适用于文本类内容若读取二进制/图片 Blob返回的是经字符串解码后的内容请结合实际场景使用如配合 Transformations 处理。6. Delete Blob删除 Blob从容器中永久删除指定 Blob 及其关联数据释放存储空间。必填参数Container容器名Blob Name要删除的 Blob 名称源码operations.ts在删除时设置deleteSnapshots: include即连同一并删除该 Blob 的所有快照const deleteOptions { deleteSnapshots: include }; await blockBlobClient.delete(deleteOptions); return deleted blob ${options.blobName};:::warning 该操作不可恢复且会连带删除快照。请勿在未确认目标的情况下对生产数据执行删除。 :::五、参数绑定与结果引用实战六个操作的参数在 operations.json 中全部声明为codehinter类型代码提示输入框意味着每个字段都可以输入静态文本绑定组件值如{{ table1.selectedRow.data.name }}引用其他查询结果如{{ queries.listBlobs1.data.result }}。查询执行结果可通过{{ queries.queryName.data }}在应用任意位置引用配合 ToolJet 的 Transformations 可对返回的 Blob 列表、读取内容做过滤与重组。例如先用 List containers 查询填充下拉框再根据选中的容器名动态执行 List blobs 查询即可实现容器 → Blob 的联动浏览。六、适用前提与限制本文基于当前仓库的3.0.0-LTS版本文档docs/versioned_docs/version-3.0.0-LTS/data-sources/azureblob.md与 azureblobstorage 插件源码 编写操作清单与参数以仓库实际配置为准连接与查询依赖网络可达的 Azure 存储账户连接串需具备相应操作的权限读/写/列表/删除Read Blob 面向文本内容二进制内容请评估字符串解码后的使用方式容器创建要求名称唯一删除操作不可恢复且默认连带快照。如需了解 ToolJet 数据源的通用机制凭据管理、查询共享等可继续阅读 Data Sources 概览若需要调整查询返回的数据结构请参考 Transformations。【免费下载链接】ToolJetOpen-source foundation of ToolJet AI - the enterprise app generation platform for internal tools, dashboards, business applications, workflows and AI agents. Build visually, from a prompt, or from Claude Code, Codex and Cursor over MCP 项目地址: https://gitcode.com/GitHub_Trending/to/ToolJet创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价