Скачивание содержимого элемента DriveItem

В этой статье рассказывается, как скачать содержимое основного потока (файла) элемента DriveItem. Вы можете скачать только те элементы driveItem, у которых имеется свойство file.

Разрешения

Для вызова этого API требуется одно из следующих разрешений. Дополнительные сведения, включая сведения о том, как выбрать разрешения, см. в статье Разрешения.

Тип разрешения Разрешения (в порядке повышения привилегий)
Делегированные (рабочая или учебная учетная запись) Files.Read, Files.ReadWrite, Files.Read.All, Files.ReadWrite.All, Sites.Read.All, Sites.ReadWrite.All
Делегированные (личная учетная запись Майкрософт) 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 /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-адресу загрузки файла, прошедшему предварительную проверку подлинности. Это такой же URL-адрес, доступный с помощью свойства @microsoft.graph.downloadUrl в ресурсе DriveItem.

Чтобы скачать содержимое файла, приложению необходимо следовать заголовку Location в ответе. Многие библиотеки клиентов HTTP будут автоматически следовать перенаправлению 302 и немедленно начинать загрузку файла.

URL-адреса загрузки, прошедшие предварительную проверку подлинности, действительны только на протяжении короткого периода времени (несколько минут) и не требуют заголовка Authorization для загрузки.

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

Загрузка части заданного диапазона байтов

Чтобы загрузить из файла часть заданного диапазона байтов, приложение может использовать заголовок Range, как указано в документе RFC 2616. Обратите внимание, что заголовок Range необходимо добавлять в фактический URL-адрес @microsoft.graph.downloadUrl, а не в запрос для /content.

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

Это позволит вернуть отклик HTTP 206 Partial Content с запрашиваемым диапазоном байтов из файла. Если не удается создать диапазон, можно проигнорировать заголовок диапазона, после чего отклик HTTP 200 возвращается с полным содержимым файла.

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

<first 1024 bytes of file>

Ответы с ошибками

Дополнительные сведения о возвращении ошибок см. в статье Ответы с ошибками.