Скачивание содержимого driveItem
Пространство имен: microsoft.graph
Важно!
API версии /beta
в Microsoft Graph могут быть изменены. Использование этих API в производственных приложениях не поддерживается. Чтобы определить, доступен ли API в версии 1.0, используйте селектор версий.
Скачивание содержимого основного потока (файла) элемента driveItem. Можно скачать только объекты driveItem со свойством file .
Чтобы получить идентификатор загружаемого элемента, см . раздел Получение driveItem.
Этот 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
Необязательные заголовки запросов
Имя | Значение | Описание |
---|---|---|
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
Скачивание файлов в приложениях на 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
<first 1024 bytes of file>
Ответы с ошибками
Дополнительные сведения о том, как возвращаются ошибки, см. в разделе Ответы на ошибки.