Joindre des fichiers à une tâche
À l’aide de l’API To Do dans Microsoft Graph, vous pouvez joindre des fichiers jusqu’à 25 Mo à un masque todoTask. Selon la taille du fichier, choisissez l’une des deux façons de joindre le fichier :
- Si la taille du fichier est comprise entre 3 Mo et 150 Mo, créez une session de téléchargement, puis utilisez
PUT
de manière itérative pour charger des plages d’octets du fichier jusqu’à ce que vous ayez téléchargé l’intégralité du fichier. Un en-tête dans la réponse finale réussiePUT
contient une URL avec l’ID de la pièce jointe. - Si la taille du fichier est inférieure à 3 Mo, faites un simple
POST
sur la propriété de navigation des pièces jointes desTâches à faire; consultez comment faire cela pour une tâche. La réponsePOST
réussie inclut l’ID de la pièce jointe.
Cet article illustre la première approche. Vous allez apprendre étape par étape à créer et à utiliser une session de chargement pour ajouter une pièce jointe de fichier à une tâche.
Etape 1 : création d’une session de chargement
Créer une session de chargement pour joindre un fichier à Tâches à faire. Spécifier le fichier dans le paramètre d’entrée AttachmentItem.
Une opération réussie renvoie HTTP 201 Created
et une nouvelle instance uploadSession qui contient une URL opaque que vous pouvez utiliser dans les opérations PUT
suivantes pour charger des parties du fichier. La uploadSession crée un emplacement de stockage temporaire où les octets du fichier sont enregistrés jusqu’au chargement complet du fichier.
L’objet uploadSession dans la réponse inclut également la propriété nextExpectedRanges, qui indique que l’emplacement de départ du chargement initial doit être l’octet 0
.
Autorisations
L’une des autorisations suivantes est nécessaire pour appeler cette API. Pour plus d’informations, notamment sur la façon de choisir les autorisations, voir Autorisations.
Type d’autorisation | Autorisations (de celle qui offre le plus de privilèges à celle qui en offre le moins) |
---|---|
Déléguée (compte professionnel ou scolaire) | Tasks.ReadWrite |
Déléguée (compte Microsoft personnel) | Tasks.ReadWrite |
Application | Non prise en charge. |
Exemple : créer une session de téléchargement pour un message
Demande
L’exemple suivant montre une demande de création d’une session de chargement.
POST https://graph.microsoft.com/beta/me/todo/lists/AAMDiFkfh=/tasks/AAMkADliMm=/attachments/createUploadSession
Content-Type: application/json
{
"attachmentInfo": {
"attachmentType": "file",
"name": "flower",
"size": 3483322
}
}
Réponse
L’exemple suivant montre la ressource uploadSession retournée pour la tâche dans le corps de la réponse.
Remarque : l’objet de réponse affiché ci-après peut être raccourci pour plus de lisibilité.
HTTP/1.1 200 OK
Content-Type: application/json
{
"@odata.context": "https://graph.microsoft.com/beta/$metadata#microsoft.graph.uploadSession",
"uploadUrl": "https://graph.microsoft.com/beta/users/6f9a2a92-8527-4d64-837e-b5312852f36d/todo/lists/AAMDiFkfh=/tasks/AAMkADliMm=/attachmentSessions/AAMkADliMm=",
"expirationDateTime": "2022-06-09T10:45:27.4324526Z",
"nextExpectedRanges": [
"0-"
]
}
Étape 2 : utiliser la session de téléchargement pour charger une plage d’octets du fichier
Pour charger le fichier, ou une partie du fichier, ajoutez /content
à l’URL retournée à l’étape 1 dans la propriété uploadUrl de la ressource uploadSession et effectuez une PUT
requête sur l’URL ajoutée. Vous pouvez télécharger l’intégralité du fichier ou fractionner le fichier en plusieurs plages d’octets. Chaque plage d’octets doit être inférieure à 4 Mo.
Spécifiez les en-têtes de requête et le corps de la demande, comme décrit dans les sections suivantes.
En-têtes de demande
Nom | Type | Description |
---|---|---|
Autorisation | Chaîne | Porteur {token}. Obligatoire. En savoir plus sur l’authentification et l’autorisation. |
Content-Length | Int32 | Nombre d’octets téléchargés dans cette opération. Pour de meilleures performances, limitez le nombre d’octets pour chaque opération PUT à 4 Mo. La demande échoue pour tout élément supérieur à 4 Mo. Obligatoire. |
Content-Range | Chaîne | La plage d’octets basée sur 0 du fichier téléchargé pendant cette opération, exprimée dans le format bytes {start}-{end}/{total} . Obligatoire. |
Content-Type | String | Le type MIME. Précisez application/octet-stream . Obligatoire. |
Corps de la demande
Spécifiez les octets réels du fichier à joindre, qui se trouvent dans la plage d’emplacements spécifiée par l’en-tête de demande Content-Range
.
Réponse
Un téléchargement réussi renvoie HTTP 200 OK
et un objet uploadSession. Notez ce qui suit dans l’objet de réponse :
- La valeur de la propriété expirationDateTime reste la même que celle renvoyée par UploadSession initiale à l'étape 1.
-
NextExpectedRanges spécifie l’emplacement d’octet suivant à partir duquel démarrer le chargement, par exemple,
"nextExpectedRanges":["2097152"]
. Vous devez charger les octets d’un fichier dans l’ordre.
- La propriété uploadUrl n’est pas explicitement renvoyée, car toutes les opérations
PUT
d’une session de téléchargement utilisent la même URL, renvoyée quand vous créez la session (étape 1).
Exemple : le premier chargement dans Tâches à faire
Demande
L’exemple suivant illustre une demande.
PUT https://graph.microsoft.com/beta/users/6f9a2a92-8527-4d64-837e-b5312852f36d/todo/lists/AAMDiFkfh=/tasks/AAMkADliMm=/attachmentSessions/AAMkADliMm=/content
Content-Type: application/octet-stream
Content-Length: 2097152
Content-Range: bytes 0-2097151/3483322
{
<bytes 0-2097151 of the file to be attached, in binary format>
}
Réponse
L’exemple de réponse suivant illustre la propriété nextNextExpectedRanges le début de la plage d’octets suivante attendue par le serveur.
HTTP/1.1 200 OK
Content-type: application/json
{
"ExpirationDateTime":"2022-06-09T10:45:27.4324526Z",
"NextExpectedRanges":["2097152"]
}
Étape 3 : continuer à télécharger des plages d’octets jusqu’à ce que le fichier entier ait été téléchargé
Suite au téléchargement initial à l’étape 2, continuez à charger la partie restante du fichier à l’aide d’une requête PUT
similaire, comme décrit à l’étape 2, avant d’atteindre la date/heure d’expiration de la session. Utilisez la collection nextNextExpectedRanges pour déterminer où commencer la prochaine plage octets à télécharger. Plusieurs plages peuvent être spécifiées, indiquant les parties du fichier que le serveur n’a pas encore reçues. Cette fonction est utile si vous avez besoin de reprendre un transfert qui a été interrompu et si votre client n’est pas sûr de l’état du service.
Une fois que le dernier octet du fichier a été téléchargé avec succès, PUT
l'opération finale renvoie unHTTP 201 Created
code de réponse et un Location
en-tête qui indique l'URL du fichier joint. Vous pouvez obtenir l’ID de la pièce jointe à partir de l’URL et l’enregistrer pour une utilisation ultérieure.
Les exemples suivants montrent comment télécharger la dernière plage d'octets du fichier vers Tâches à faire dans les étapes précédentes.
Exemple : le chargement final dans Tâches à faire
Demande
L’exemple suivant illustre une demande.
PUT https://graph.microsoft.com/beta/users/6f9a2a92-8527-4d64-837e-b5312852f36d/todo/lists/AAMDiFkfh=/tasks/AAMkADliMm=/attachmentSessions/AAMkADliMm=/content
Content-Type: application/octet-stream
Content-Length: 1386170
Content-Range: bytes 2097152-3483321/3483322
{
<bytes 2097152-3483321 of the file to be attached, in binary format>
}
Réponse
Ce qui suit est un exemple de réponse qui montre un Location
en-tête de réponse à partir duquel vous pouvez enregistrer l’ID pièce jointe (AAMkADI5MAAIT3drCAAABEgAQANAqbAe7qaROhYdTnUQwXm0=
) pour une utilisation ultérieure.
HTTP/1.1 201 Created
Location: https://graph.microsoft.com/beta/users/6f9a2a92-8527-4d64-837e-b5312852f36d/todo/lists/AAMDiFkfh=/tasks/AAMkADliMm=/Attachments/AAMkADI5MAAIT3drCAAABEgAQANAqbAe7qaROhYdTnUQwXm0=
Content-Length: 0
Étapes alternative : annulation de la session de chargement
À tout moment avant l’expiration de la session de chargement, si vous devez annuler le chargement, vous pouvez utiliser la même URL qu’initialement pour supprimer la session de chargement. Une opération réussie retourne un code de réponse HTTP 204 No Content
.
Exemple : annuler la session de chargement
Demande
L’exemple suivant illustre une demande.
DELETE https://graph.microsoft.com/beta/users/6f9a2a92-8527-4d64-837e-b5312852f36d/todo/lists/AAMDiFkfh=/tasks/AAMkADliMm=/attachmentSessions/AAMkADliMm=
Réponse
L’exemple suivant illustre la réponse.
HTTP/1.1 204 No content