Anfügen von Dateien an eine To Do-Aufgabe

Mithilfe der To-Do-API in Microsoft Graph können Sie Dateien mit bis zu 25 MB an ein todoTask-Objekt anfügen. Abhängig von der Dateigröße wählen Sie eine von zwei Optionen zum Anfügen der Datei aus:

  • Um Dateien beliebiger Größe anzuhängen, erstellen Sie eine Upload-Sitzung und verwenden Sie PUT, um iterativ Byte-Bereiche der Datei hochzuladen, bis Sie die gesamte Datei hochgeladen haben. Eine Kopfzeile in der endgültigen erfolgreichen PUT-Antwort enthält eine URL mit der Anlagen-ID.
  • Wenn die Dateigröße unter 3 MB liegt, führen Sie eine einzelnePOST Aktion über die Navigationseigenschaft Anhänge einer todoTask durch. Hier finden Sie entsprechende Informationen für eine Aufgabe. Die erfolgreiche POST-Antwort enthält die ID der Dateianlage.

In diesem Artikel wird der erste Ansatz veranschaulicht. Sie erfahren Schritt für Schritt, wie Sie eine Upload-Sitzung erstellen und verwenden, um einer Aufgabe eine Dateianlage hinzuzufügen.

Schritt 1: Erstellen einer Uploadsitzung

Erstellen Sie eine Upload-Sitzung, um eine Datei an eine todoTaskanzufügen. Geben Sie die Datei im attachmentInfo-Eingabeparameter an.

Ein erfolgreicher Vorgang gibt HTTP 201 Created und eine neue uploadSession-Instanz zurück, die eine opake URL enthält, die Sie in nachfolgenden PUT-Vorgängen zum Hochladen von Teilen der Datei verwenden können. Die uploadSession bietet einen temporären Speicherort, an dem die Bytes der Datei gespeichert werden, bis der Upload vollständig abgeschlossen ist.

Das uploadSession-Objekt in der Antwort enthält außerdem die nextExpectedRanges-Eigenschaft, die angibt, dass der Startspeicherort des anfänglichen Uploads Byte 0 sein sollte.

Berechtigungen

Eine der nachfolgenden Berechtigungen ist erforderlich, um diese API aufrufen zu können. Weitere Informationen, unter anderem zur Auswahl von Berechtigungen, finden Sie unter Berechtigungen.

Berechtigungstyp Berechtigungen (von der Berechtigung mit den wenigsten Rechten zu der mit den meisten Rechten)
Delegiert (Geschäfts-, Schul- oder Unikonto) Tasks.ReadWrite
Delegiert (persönliches Microsoft-Konto) Tasks.ReadWrite
Anwendung Nicht unterstützt

Beispiel: Upload-Sitzung für ein „todoTask“ erstellen

Anforderung

Das folgende Beispiel zeigt eine Anforderung zum Erstellen einer Uploadsitzung.

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
  }
}

Antwort

Das folgende Beispiel zeigt die uploadSession-Ressource, die für die Aufgabe im Antwortkörper zurückgegeben wird.

Hinweis: Das hier gezeigte Antwortobjekt kann zur besseren Lesbarkeit gekürzt werden.

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-"
    ]
}

Schritt 2: Verwenden der Upload-Sitzung zum Hochladen eines Bytebereichs der Datei

Um die Datei oder einen Teil der Datei hochzuladen, fügen Sie /content an die URL an, die in Schritt 1 in der uploadUrl-Eigenschaft der uploadSession-Ressource zurückgegeben wurde, und stellen Sie eine PUT Anforderung für die angefügte URL. Sie können die gesamte Datei auf einmal hochladen oder die Datei in mehrere Bytebereiche aufteilen. Jeder Bytebereich muss kleiner als 4 MB sein.

Geben Sie die Anforderungsheader und den Anforderungstext an, wie in den folgenden Abschnitten beschrieben.

Anforderungsheader

Name Typ Beschreibung
Authorization Zeichenfolge Bearer {token}. Erforderlich.
Content-Length Int32 Die Anzahl von Bytes, die in diesem Vorgang hochgeladen werden. Die Obergrenze für die Anzahl der Bytes für jeden PUTVorgang beträgt 4 MB. Die Anforderung schlägt bei mehr als 4 MB fehl. Erforderlich.
Content-Range Zeichenfolge Der 0-basierte Byte-Bereich der Datei, die in diesem Vorgang hochgeladen wird. Wird im Format bytes {start}-{end}/{total} angegeben. Erforderlich.
Content-Type Zeichenfolge Der MIME-Typ. application/octet-stream angeben. Erforderlich.

Anforderungstext

Geben Sie die tatsächlichen Bytes der anzufügenden Datei an, die sich im im Content-Range-Anforderungsheader angegebenen Speicherbereich befinden.

Antwort

Bei einem erfolgreichen Upload wird ein HTTP 200 OKAntwortcode und ein uploadSession-Objekt zurückgegeben. Beachten Sie Folgendes im Antwortobjekt:

  • Der expirationDateTime-Eigenschaftswert bleibt unverändert gegenüber dem vom anfänglichen uploadSession in Schritt 1 zurückgegebenen.
  • In NextExpectedRanges wird der nächste Byte-Speicherort angegeben, aus dem der Upload gestartet werden soll, z. B. "nextExpectedRanges":["2097152"]. Sie müssen die Bytes einer Datei in der korrekten Reihenfolge hochladen.
  • Die uploadUrl-Eigenschaft wird nicht explizit zurückgegeben, da alle PUTVorgänge einer Upload-Sitzung die gleiche URL verwenden, die beim Erstellen der Sitzung zurückgegeben wird (Schritt 1).

Beispiel: Erster Upload in die „todoTask“

Anforderung

Das folgende Beispiel zeigt eine Anfrage.

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>
}

Antwort

Es folgt ein Beispiel für eine Antwort, die in der Eigenschaft nextExpectedRanges den Beginn des nächsten vom Server erwarteten Bytebereichs anzeigt.

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

{
  "ExpirationDateTime":"2022-06-09T10:45:27.4324526Z",
  "NextExpectedRanges":["2097152"]
}

Schritt 3: Fortsetzen des Hochladens von Bytebereichen, bis die gesamte Datei hochgeladen wurde

Fahren Sie nach dem ersten Upload, der in Schritt 2 beschrieben wurde, mit dem Hochladen der verbleibenden Teile der Datei fort, indem Sie eine ähnliche PUT-Anforderung wie in Schritt 2 beschrieben verwenden, bevor Sie den Ablauftermin für die Sitzung erreichen. Verwenden Sie die Sammlung NextExpectedRanges, um zu bestimmen, wo der nächste Bytebereich für den Upload beginnen soll. Eventuell werden mehrere Bereiche angegeben. Sie stehen für Teile der Datei, die der Server noch nicht empfangen hat. Dies ist nützlich, wenn eine Übertragung nach einer Unterbrechung fortgesetzt werden soll und der Client den Dienststatus nicht kennt.

Nachdem das letzte Byte der Datei erfolgreich hochgeladen wurde, gibt der endgültige PUTVorgang einen HTTP 201 CreatedAntwortcode und einen LocationHeader zurück, der die URL der Dateianlage angibt. Sie können die Anlagen-ID aus der URL abrufen und zur späteren Verwendung speichern.

Die folgenden Beispiele zeigen, wie in den vorangegangenen Schritten der letzte Bytebereich der Datei in die todoTask hochgeladen wird.

Beispiel: Abschließender Upload in die „todoTask“

Anforderung

Das folgende Beispiel zeigt eine Anfrage.

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>
}

Antwort

Die folgende Beispielantwort zeigt einen LocationAntwortheader, von dem aus Sie die Anlagen-ID (AAMkADI5MAAIT3drCAAABEgAQANAqbAe7qaROhYdTnUQwXm0=) zur späteren Verwendung speichern können.

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

Alternativer Schritt: Abbrechen der Upload-Sitzung

Wenn Sie zu einem beliebigen Zeitpunkt vor Ablauf der Upload-Sitzung den Upload abbrechen müssen, können Sie dieselbe ursprüngliche URL verwenden, um die Upload-Sitzung zu löschen. Bei einem erfolgreichen Vorgang wird ein HTTP-204 No Content Antwortcode zurückgegeben.

Beispiel: Abbrechen der Uploadsitzung

Anforderung

Das folgende Beispiel zeigt eine Anfrage.

DELETE https://graph.microsoft.com/beta/users/6f9a2a92-8527-4d64-837e-b5312852f36d/todo/lists/AAMDiFkfh=/tasks/AAMkADliMm=/attachmentSessions/AAMkADliMm=

Antwort

Das folgende Beispiel zeigt die Antwort.

HTTP/1.1 204 No content