Descargar el contenido de un objeto DriveItem

Espacio de nombres: microsoft.graph

Advertencia

Este extremo requiere TLS 1.2 para funcionar normalmente. Microsoft anunció el desuso de TLS 1.0 y 1.1 para Office 365 y Azure AD servicios. Aunque Microsoft Graph admite estos dos protocolos, es posible que experimente errores de nivel de transporte. Para obtener más información acerca de la desuso de TLS 1.0 y 1.1, vea Enable support for TLS 1.2 in your environment.

Descargue el contenido de la secuencia principal (archivo) de un objeto driveItem. Solo se pueden descargar objetos driveItem con la propiedad file.

Permisos

Se requiere uno de los siguientes permisos para llamar a esta API. Para obtener más información, incluido cómo elegir permisos, vea Permisos.

Tipo de permiso Permisos (de menos a más privilegiados)
Delegado (cuenta profesional o educativa) Files.Read, Files.ReadWrite, Files.Read.All, Files.ReadWrite.All, Sites.Read.All, Sites.ReadWrite.All
Delegado (cuenta personal de Microsoft) Files.Read, Files.ReadWrite, Files.Read.All, Files.ReadWrite.All
Aplicación Files.Read.All, Files.ReadWrite.All, Sites.Read.All, Sites.ReadWrite.All

Solicitud 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

Encabezados de solicitud opcionales

Nombre Valor Descripción
if-none-match String Si se incluye el encabezado de la solicitud y la eTag (o cTag) proporcionada coincide con la etiqueta actual del archivo, se devuelve una respuesta HTTP 304 Not Modified.

Ejemplo

Este es un ejemplo para descargar un archivo completo.

Solicitud

GET /me/drive/items/{item-id}/content

Respuesta

Devuelve una respuesta 302 Found que redirige a una URL de descarga autenticada previamente para el archivo. Se trata de la misma dirección URL disponible mediante la propiedad @microsoft.graph.downloadUrl del objeto DriveItem.

Para descargar el contenido del archivo, la aplicación tendrá que seguir el encabezado Location de la respuesta. Muchas bibliotecas de cliente HTTP seguirán de forma automática el redireccionamiento 302 e iniciarán la descarga del archivo de forma inmediata.

Las URL de descarga autenticadas previamente solo son válidas durante un breve período de tiempo (unos minutos) y no requieren un encabezado Authorization para descargarlas.

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

Descargar archivos en aplicaciones de JavaScript

Para descargar archivos en una aplicación de JavaScript, no puede usar la API /content porque responde con un redireccionamiento 302. Un redireccionamiento 302 está explícitamente prohibido cuando se necesita una comprobación previa de uso compartido de recursos entre orígenes (CORS), como al proporcionar el encabezado Authorization.

En su lugar, la aplicación debe seleccionar la propiedad @microsoft.graph.downloadUrl que devuelve la misma URL a la que dirige /content. Esta dirección URL puede solicitarse después directamente con XMLHttpRequest. Como estas direcciones URL están autenticadas previamente, pueden recuperarse sin una solicitud de comprobación previa de CORS.

Ejemplo

Para recuperar la dirección URL de descarga de un archivo, primero realice una solicitud que incluya la propiedad @microsoft.graph.downloadUrl:

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

Esto devuelve el identificador y la dirección URL de descarga de un archivo:

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

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

Después, puede realizar una solicitud XMLHttpRequest para la dirección URL proporcionada en @microsoft.graph.downloadUrl para recuperar el archivo.

Descargas de rango parcial

Para descargar un rango parcial de bytes del archivo, la aplicación puede usar el encabezado Range como se especifica en RFC 2616. Tenga en cuenta que debe anexar el encabezado Range a la dirección URL @microsoft.graph.downloadUrl real y no a la solicitud de /content.

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

Esto devolverá una respuesta HTTP 206 Partial Content con el rango de solicitud de bytes del archivo. Si no se puede generar el rango, se puede omitir el encabezado Range y se devolverá una respuesta HTTP 200 con el contenido completo del archivo.

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

<first 1024 bytes of file>

Respuestas de error

Vea Respuestas de error para obtener más información sobre la manera en que se devuelven los errores.