调用Microsoft Graph API OneDrive driveitem-get-content接口无法获取下载链接求助
问题原因
- 你调用的
driveitem-get-content接口本身的默认逻辑就是:文件体积小于4MB时直接返回200响应+文件二进制内容,不会返回Location头;只有文件体积大于4MB时才会返回302重定向响应,在Location头部携带下载链接 - 绝大多数HTTP请求库(比如Python的requests)默认开启了自动跟进重定向的配置,就算接口返回302,客户端也会自动请求Location地址拿到文件内容后才返回响应对象,你拿到的已经是重定向后的最终响应,自然不存在Location头部
解决建议
- 方案1:修改HTTP客户端配置,禁用自动跟进重定向。如果你用的是Python requests库,只需要在请求参数里加
allow_redirects=False即可,此时接口返回302时你可以直接从response.headers['Location']拿到下载链接。如果你的目标文件小于4MB,该方案不生效,请直接使用方案2 - 方案2:直接使用你已经调试通的drive item元数据查询接口,从返回结果的
@microsoft.graph.downloadUrl字段直接获取下载链接,不需要调用getContent接口,该链接的有效期为几小时,足够完成下载使用 - 额外注意:你提供的代码里存在变量拼写错误,
resopnse为错误拼写,需要和实际定义的响应变量名保持一致,避免出现取不到属性的问题
内容的提问来源于stack exchange,提问作者vrund297
相关产品推荐
相关产品推荐

