首页 > 解决方案 > 从 SharePoint 下载 MS Graph API 文件

问题描述

我正在尝试使用 Graph API 从表单库下载 XML 文件,但它不工作。我在这里引用文档,我认为它告诉我正确的语法是GET /sites/{siteId}/drive/items/{item-id}/content. 但是,当我使用 Graph Explorer 使用该语法时,它会给我 404 File Not Found。接下来我尝试了语法GET /drives/{drive-id}/items/{item-id}/content并返回状态代码 0,但消息正文只是说 {"isTrusted": true}。我应该注意,如果我删除 URL 上的最后一个参数并使用它的语法GET /drives/{drive-id}/items/{item-id}确实会带回有关文件的信息。

语法有问题吗?这可能不是您可以对表单库中的 XML 文件执行的操作吗?这可能是 Graph Explorer 的限制吗?

标签: sharepointmicrosoft-graph-api

解决方案


当您点击/drives/{drive-id}/items/{item-id}/content终结点时,Microsoft Graph 会响应 302 重定向,由于 CORS 策略,浏览器会拒绝该重定向。

以下是在 JavaScript 应用程序部分下载 OneDrive 文件的解释:

要在 JavaScript 应用程序中从 OneDrive 下载文件,您不能使用 /content API,因为它会以 302 重定向响应。当需要 CORS 预检时,例如在提供 Authorization 标头时,明确禁止 302 重定向。

相反,您的应用需要选择 @microsoft.graph.downloadUrl 属性,该属性返回 /content 重定向到的相同 URL。然后可以使用 XMLHttpRequest 直接请求此 URL。因为这些 URL 是预先认证的,所以可以在没有 CORS 预检请求的情况下检索它们。

要在 Graph Explorer 中下载文件,首先发出一个包含该@microsoft.graph.downloadUrl属性的请求:

GET /drive/items/{item-id}?select=@microsoft.graph.downloadUrl

然后可以通过标记对@microsoft.graph.downloadUrl属性中提供的 Url 的另一个请求来下载文件


推荐阅读