下载 DriveItem 的内容

命名空间:microsoft.graph

下载 DriveItem 的主要流 (文件) 的内容。 仅能下载具有文件属性的 DriveItems

此 API 可用于以下国家级云部署

全局服务 美国政府 L4 美国政府 L5 (DOD) 由世纪互联运营的中国

权限

为此 API 选择标记为最低特权的权限。 只有在应用需要它时,才使用更高的特权权限。 有关委派权限和应用程序权限的详细信息,请参阅权限类型。 要了解有关这些权限的详细信息,请参阅 权限参考

权限类型 最低特权权限 更高特权权限
委派(工作或学校帐户) Files.Read Files.ReadWrite、Files.Read.All、Files.ReadWrite.All、Sites.Read.All、Sites.ReadWrite.All
委派(个人 Microsoft 帐户) Files.Read Files.ReadWrite、Files.Read.All、Files.ReadWrite.All
应用程序 Files.Read.All Files.ReadWrite.All、Sites.Read.All、Sites.ReadWrite.All

HTTP 请求

GET /drives/{drive-id}/items/{item-id}/content
GET /groups/{group-id}/drive/items/{item-id}/content
GET /me/drive/root:/{item-path}:/content
GET /me/drive/items/{item-id}/content
GET /shares/{shareIdOrEncodedSharingUrl}/driveItem/content
GET /sites/{siteId}/drive/items/{item-id}/content
GET /users/{userId}/drive/items/{item-id}/content

请求标头

名称 说明
Authorization 持有者 {token}。 必填。 详细了解 身份验证和授权
if-none-match 字符串 。 如果包含此请求标头,且提供的 eTag(或 cTag)与文件中的当前标记不匹配,则返回 HTTP 304 Not Modified 响应。

示例

下面是下载完整文件的示例。

请求

GET /me/drive/items/{item-id}/content

响应

返回重定向 302 Found 到文件的预身份验证下载 URL 的响应,该文件是 DriveItem @microsoft.graph.downloadUrl 上的 属性提供的相同 URL。

若要下载文件的内容,应用程序需要遵循 Location 响应中的 标头。 许多 HTTP 客户端库将自动遵循 302 重定向并立即开始下载文件。

预身份验证的下载 URL 仅在短时间内有效, (几分钟) ,不需要 Authorization 下载标头。

HTTP/1.1 302 Found
Location: https://b0mpua-by3301.files.1drv.com/y23vmagahszhxzlcvhasdhasghasodfi

在 JavaScript 应用中下载文件

若要在 JavaScript 应用中下载文件,不能使用 /content API,因为这会通过 302 重定向进行响应。 302当需要跨源资源共享 (CORS) 预检时(例如提供 Authorization 标头时),明确禁止重定向。

相反,应用需要选择 @microsoft.graph.downloadUrl 属性,该属性返回 /content 指向的相同 URL。 然后,便可以使用 XMLHttpRequest 直接向此 URL 发出请求。 由于这些 URL 是预身份验证的,因此无需 CORS 预检请求即可检索它们。

示例

若要检索文件的下载 URL,请先发出包含 @microsoft.graph.downloadUrl 属性的请求:

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

调用返回文件的 ID 和下载 URL:

HTTP/1.1 200 OK
Content-Type: application/json

{
  "id": "12319191!11919",
  "@microsoft.graph.downloadUrl": "https://..."
}

然后,可以使用 XMLHttpRequest 向 @microsoft.graph.downloadUrl 中提供的 URL 发出请求,从而检索文件。

部分范围下载

若要从文件中下载部分范围的字节,应用程序可以使用 Range 中指定的 标头。 必须将 标头追加 Range 到实际 @microsoft.graph.downloadUrl URL,而不是附加到 的请求 /content

GET https://b0mpua-by3301.files.1drv.com/y23vmag
Range: bytes=0-1023

调用返回响应, HTTP 206 Partial Content 其中包含文件中的字节请求范围。 如果无法生成范围,则可以忽略 Range 标头,并 HTTP 200 返回包含文件完整内容的响应。

HTTP/1.1 206 Partial Content
Content-Range: bytes 0-1023/2048
Content-Type: application/octet-stream

<first 1024 bytes of file>

错误响应

请参阅错误响应,详细了解错误返回方式。