Télécharger le contenu d’un objet driveItem

Espace de noms: microsoft.graph

Importante

Les API sous la version /beta dans Microsoft Graph sont susceptibles d’être modifiées. L’utilisation de ces API dans des applications de production n’est pas prise en charge. Pour déterminer si une API est disponible dans v1.0, utilisez le sélecteur Version .

Téléchargez le contenu du flux principal (fichier) d’une ressource driveItem. Seules les ressources driveItem avec la propriété fichier peuvent être téléchargées.

Cette API est disponible dans les déploiements de cloud national suivants.

Service global Gouvernement des États-Unis L4 Us Government L5 (DOD) Chine gérée par 21Vianet

Autorisations

Choisissez l’autorisation ou les autorisations marquées comme moins privilégiées pour cette API. Utilisez une autorisation ou des autorisations privilégiées plus élevées uniquement si votre application en a besoin. Pour plus d’informations sur les autorisations déléguées et d’application, consultez Types d’autorisations. Pour en savoir plus sur ces autorisations, consultez les informations de référence sur les autorisations.

Type d’autorisation Autorisations avec privilèges minimum Autorisations privilégiées plus élevées
Déléguée (compte professionnel ou scolaire) Files.Read Files.ReadWrite, Files.Read.All, Files.ReadWrite.All, Sites.Read.All, Sites.ReadWrite.All
Déléguée (compte Microsoft personnel) Files.Read Files.ReadWrite, Files.Read.All, Files.ReadWrite.All
Application Files.Read.All Files.ReadWrite.All, Sites.Read.All, Sites.ReadWrite.All

Requête 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

En-têtes de demande facultatifs

Nom Valeur Description
if-none-match String Si cet en-tête de demande est inclus et que l’eTag (ou cTag) fourni correspond à l’identité actuelle sur le fichier, une réponse HTTP 304 Not Modified est renvoyée.

Exemple

L’exemple suivant montre une demande de téléchargement d’un fichier complet.

Demande

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

Réponse

L’exemple suivant illustre la réponse.

Retourne une 302 Found réponse redirigeant vers une URL de téléchargement pré-authentifiée pour le fichier. Il s’agit de la même URL disponible via la @microsoft.graph.downloadUrl propriété sur l’objet DriveItem.

Pour télécharger le contenu du fichier, votre application doit suivre l’en-tête Location dans la réponse. De nombreuses bibliothèques clientes HTTP suivent la redirection 302 et commencent à télécharger le fichier immédiatement.

Les URL de téléchargement pré-authentifiées ne sont valides que pendant une courte période (quelques minutes) et ne nécessitent pas d’en-tête Authorization à télécharger.

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

Téléchargement de fichiers dans les applications JavaScript

Pour télécharger des fichiers dans une application JavaScript, vous ne pouvez pas utiliser l’API /content , car elle répond avec une 302 redirection. Une 302 redirection est explicitement interdite lorsqu’un contrôle préalable CORS (Cross-Origin Resource Sharing) est requis, par exemple lors de la fourniture de l’en-tête Authorization.

Au lieu de cela, votre application doit sélectionner la propriété @microsoft.graph.downloadUrl, qui renvoie la même URL vers laquelle /content dirige. Cette URL peut ensuite être demandée directement à l’aide de XMLHttpRequest. Étant donné que ces URL sont pré-authentifiées, elles peuvent être récupérées sans demande de contrôle préalable CORS.

Exemple

Pour récupérer l’URL de téléchargement d’un fichier, émettez tout d’abord une requête qui inclut la propriété @microsoft.graph.downloadUrl :

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

L’appel retourne l’ID et l’URL de téléchargement d’un fichier :

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

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

Vous pouvez ensuite émettre une requête XMLHttpRequest pour obtenir l’URL fournie dans @microsoft.graph.downloadUrl pour extraire le fichier.

Téléchargements de plage partielle

Pour télécharger une plage partielle d’octets à partir du fichier, votre application peut utiliser l’en-tête Range comme spécifié dans RFC 2616. Vous devez ajouter l’en-tête Range à l’URL réelle @microsoft.graph.downloadUrl et non à la demande pour /content.

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

L’appel retourne une HTTP 206 Partial Content réponse avec la plage d’octets de requête du fichier. Si la plage ne peut pas être générée, l’en-tête de plage peut être ignoré et une HTTP 200 réponse est retournée avec le contenu complet du fichier.

HTTP/1.1 206 Partial Content
Content-Range: bytes 0-1023/2048

<first 1024 bytes of file>

Réponses d’erreur

Pour plus d’informations sur la façon dont les erreurs sont retournées, consultez Réponses d’erreur.