如何通过Logic Apps从OneDrive复制文件到ADLS及无微软账号登录问题
解决方案
1. 无微软账号获取OneDrive文件内容
Logic Apps内置的OneDrive连接器依赖微软账号OAuth认证,没有账号的话可以直接用HTTP动作调用OneDrive REST API绕开登录:
- 若目标文件是公开共享(允许匿名访问):
- 复制文件的共享链接,对完整共享链接做URL编码
- 添加
HTTP动作,请求方法设为GET,请求URL填https://api.onedrive.com/v1.0/shares/u!{编码后的共享链接}/root/content- 示例:原共享链接是
https://1drv.ms/u/s!Abc123,编码后变成https%3A%2F%2F1drv.ms%2Fu%2Fs%21Abc123,最终URL为https://api.onedrive.com/v1.0/shares/u!https%3A%2F%2F1drv.ms%2Fu%2Fs%21Abc123/root/content
- 示例:原共享链接是
- 该动作返回的响应体就是文件的二进制内容,可直接用于后续步骤
- 若文件是私有状态:OneDrive私有文件必须通过微软账号的OAuth授权访问,无账号的话没有合法的认证方式,无法获取内容
2. 将文件内容复制到ADLS
获取到文件内容后,有两种方式完成上传:
方式一:用ADLS Gen2内置连接器
- 添加ADLS Gen2的「创建文件」动作
- 配置存储账户名称、目标文件系统和文件路径
- 将HTTP动作返回的响应内容填入「文件内容」字段即可完成上传
方式二:用HTTP动作调用ADLS REST API
- 从Azure存储账户生成具有写入权限的SAS令牌
- 添加
HTTP动作,请求方法设为PUT,请求URL填https://{存储账户名}.dfs.core.windows.net/{文件系统名}/{目标文件路径}?{SAS令牌} - 在请求体中填入OneDrive文件的二进制内容,请求头设置
Content-Type为对应文件的MIME类型(如application/pdf、image/jpeg)
内容的提问来源于stack exchange,提问作者Venu
相关产品推荐
相关产品推荐

