如何用Logic App实现Blob存储到SharePoint增量同步并保留目录结构
核心实现逻辑
- 触发逻辑直接使用 Azure Blob 存储的 当添加或修改 blob 时(仅属性) 触发器,配置监听目标容器路径,天然实现增量触发,仅新增/更新的 blob 会启动同步流程
- 路径拆分逻辑:
触发器输出的Blob路径默认已剔除容器名前缀,比如示例中的mycontainer/folder/20210101/test.csv,触发器拿到的Name属性为folder/20210101/test.csv,用以下表达式拆分目录和文件名:- 拆分路径为数组:
split(triggerBody()?['Name'], '/') - 提取文件名:
last(split(triggerBody()?['Name'], '/')) - 提取相对目录路径:
join(take(split(triggerBody()?['Name'], '/'), sub(length(split(triggerBody()?['Name'], '/')), 1)), '/')
- 拆分路径为数组:
- 自动创建目标文件夹:调用 SharePoint 创建文件夹 动作,选择目标站点和文档库,将上一步得到的相对目录路径填入文件夹路径参数即可,Logic App 会自动识别已存在的文件夹不重复创建,不存在则自动生成
- 文件上传:调用 SharePoint 创建文件 动作,目标站点和文档库与上一步一致,文件夹路径选择创建文件夹动作输出的路径,文件名填提取到的Blob文件名,文件内容选择Blob触发器输出的
文件内容即可
可选优化配置
- 若要完全避免重复上传,可在创建文件前增加 SharePoint 获取文件元数据使用路径 动作,判断目标路径是否已存在同名文件,存在则终止当前流程,不存在再执行上传
- 若不需要实时同步,可改为定时触发,搭配 列出Blob 动作,添加筛选条件仅取
LastModifiedDate大于上次同步时间的Blob,搭配变量存储同步时间戳即可实现按天增量同步 - 需确保Blob存储连接账号有目标容器的读取权限,SharePoint连接账号有目标文档库的编辑权限
内容的提问来源于stack exchange,提问作者Parker
相关产品推荐
相关产品推荐

