如何通过Logic Apps工作流将Azure Blob中NativeFiles下的文件夹及文件复制到SharePoint
核心逻辑
递归遍历Blob容器中Dev/6c4999ceb9964e0bb08f30790bd9a673/Upload/NativeFiles/路径下的所有文件夹与文件,在SharePoint目标文档库中复刻相同的文件夹层级,再将对应文件上传至匹配路径。
具体工作流步骤拆解
- 触发方式选择:
- 一次性迁移:采用手动触发,直接启动工作流执行迁移。
- 定期同步:配置定时触发(如每日凌晨),自动执行同步操作。
- 初始化变量:
- 定义字符串变量
BlobPrefix,赋值为Dev/6c4999ceb9964e0bb08f30790bd9a673/Upload/NativeFiles/,用于后续路径截取。 - 定义字符串变量
SPLibraryName,赋值为目标SharePoint文档库名称。
- 定义字符串变量
- 遍历Blob内容:
添加Azure Blob存储的「列出Blob」动作,配置:- 容器名称:
Dev - Blob前缀:引用
BlobPrefix变量 - 勾选「递归」选项,确保获取所有子层级的文件夹与文件。
- 容器名称:
- 处理文件夹结构:
对「列出Blob」返回的每一项,添加条件判断:- 当
IsFolder属性为true时,提取相对路径:用split()函数拆分完整Blob路径,去掉BlobPrefix前缀部分,得到相对层级(如FolderA/SubFolderB)。 - 调用SharePoint的「创建文件夹」动作,目标库为
SPLibraryName,文件夹路径填写上述相对层级,自动创建多级文件夹。
- 当
- 上传文件至SharePoint:
当IsFolder属性为false时:- 调用Azure Blob存储的「获取Blob内容」动作,获取文件二进制数据。
- 提取文件的相对路径与文件名:拆分Blob路径,得到文件所在的SharePoint文件夹路径,以及文件名。
- 调用SharePoint的「上传文件」动作,选择目标文件夹,上传文件内容,可配置「覆盖已存在的文件」选项。
- 错误处理:
为文件上传、文件夹创建等核心动作添加「运行后范围」,捕获失败情况,记录错误信息(如写入Azure Monitor日志)或触发重试机制。
关键配置细节
- 权限配置:确保Logic Apps使用的托管身份/服务主体拥有:
- Azure Blob容器的
Storage Blob Data Reader权限(读取文件)。 - SharePoint目标文档库的
编辑权限(创建文件夹、上传文件)。
- Azure Blob容器的
- 路径处理函数示例:
截取相对路径可使用表达式:replace(items('Apply_to_each')?['Path'], variables('BlobPrefix'), '') - 大文件处理:若文件超过SharePoint默认上传限制(15GB),改用「上传大文件」动作,启用分块上传模式。
注意事项
- 若文件数量较多,可在「Apply to each」动作中设置并行度(最高50),提升处理效率,但需避免触发API限流。
- 可添加前置检查:在上传文件前,调用SharePoint的「获取文件元数据」动作,判断文件是否已存在,按需跳过或覆盖。
- 迁移完成后,添加「发送邮件通知」动作,同步迁移成功/失败的文件统计信息。
内容的提问来源于stack exchange,提问作者Hemant Kumar
相关产品推荐
相关产品推荐

