下载 driveItem 内容
命名空间:microsoft.graph
下载 DriveItem 的主要流 (文件) 的内容。 只能下载具有文件属性的 driveItem 对象。
若要获取要下载的项目的 ID,请参阅 获取 driveItem。
此 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>
错误响应
请参阅错误响应,详细了解错误返回方式。