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

Пространство имен: microsoft.graph

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

Этот API доступен в следующих национальных облачных развертываниях.

Глобальная служба Правительство США L4 Правительство США L5 (DOD) Китай управляется 21Vianet

Разрешения

Выберите разрешение или разрешения, помеченные как наименее привилегированные для этого 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 /shares/{shareIdOrEncodedSharingUrl}/driveItem/content
GET /sites/{siteId}/drive/items/{item-id}/content
GET /users/{userId}/drive/items/{item-id}/content

Заголовки запросов

Имя Описание
Авторизация Bearer {token}. Обязательно. Дополнительные сведения о проверке подлинности и авторизации.
if-none-match Строка. Если указан этот заголовок запроса, а предоставленный тег 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

Скачивание файлов в приложениях на JavaScript

Чтобы скачать файлы в приложение JavaScript, нельзя использовать /content API, так как он отвечает перенаправлением 302 . Перенаправление 302 явно запрещено, если требуется предварительный доступ к ресурсам между источниками (CORS), например при указании заголовка авторизации.

Вместо этого приложение должно выбрать свойство @microsoft.graph.downloadUrl, возвращающее тот же URL-адрес, на который перенаправляет ссылка /content. Затем этот URL-адрес можно запросить напрямую с помощью XMLHttpRequest. Так как эти URL-адреса предварительно прошли проверку подлинности, их можно получить без предварительного запроса CORS.

Пример

Чтобы получить URL-адрес для скачивания файла, сначала отправьте запрос, включающий свойство @microsoft.graph.downloadUrl:

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

Вызов возвращает идентификатор и URL-адрес для скачивания файла:

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

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

Затем вы можете отправить запрос XMLHttpRequest на URL-адрес, указанный в свойстве @microsoft.graph.downloadUrl, чтобы получить файл.

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

Чтобы загрузить из файла часть заданного диапазона байтов, приложение может использовать заголовок Range, как указано в документе RFC 2616. Необходимо добавить 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>

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

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