下载 DriveItem 的内容
命名空间:microsoft.graph
警告
此终结点需要 TLS 1.2 正常运行。 Microsoft 宣布弃用 TLS 1.0 和 1.1,以Office 365和Azure AD服务。 尽管 Microsoft Graph仍支持这两种协议,但可能会遇到传输级别错误。 有关 TLS 1.0 和 1.1 弃用功能详细信息,请参阅在你的环境中启用 对 TLS 1.2 的支持。
下载 DriveItem 的主要流 (文件) 的内容。 仅能下载具有 文件 属性的 DriveItems。
权限
要调用此 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
可选的请求标头
名称 | 值 | 说明 |
---|---|---|
if-none-match | String | 如果包含此请求标头,且提供的 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
重定向响应。当需要 跨源资源共享 (CORS) 预检 时 (例如,在提供 授权 标头时),明确禁止使用 302
重定向。
相反,应用需要选择 @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 发出请求,从而检索文件。
部分范围下载
若要从文件中下载部分范围的字节,应用程序可以使用 RFC 2616 中指定的 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>
错误响应
请参阅错误响应,详细了解错误返回方式。
反馈
提交和查看相关反馈