printDocument: createUploadSession

Namespace: microsoft.graph

Erstellen Sie eine Uploadsitzung, die es einer App ermöglicht, Bereiche einer binären Datei, die mit dem Druckdokument verknüpft ist, iterativ hochzuladen.

Als Teil der Antwort gibt diese Aktion eine Upload-URL zurück, die in nachfolgenden sequenziellen Abfragen verwendet werden PUT kann. Anforderungsheader für jeden PUT Vorgang können verwendet werden, um den genauen Bytebereich anzugeben, der hochgeladen werden soll. Dadurch kann die Übertragung fortgesetzt werden, falls die Netzwerkverbindung während des Uploads unterbrochen wird.

Hinweis: Das Erstellen einer Uploadsitzung mit Anwendungsberechtigungen ist nur erfolgreich, wenn ein printTask-Vorgang in einem processing Zustand des zugeordneten Druckauftrags vorhanden ist, der durch einen Trigger gestartet wird, den die anfordernde App erstellt hat. Ausführliche Informationen zum Registrieren eines Aufgabenauslösers finden Sie unter Extending Universal Print to support pull printing.

Berechtigungen

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

Zusätzlich zu den folgenden Berechtigungen muss der Mandant des Benutzers oder der App über ein aktives Universelles Druckabonnement und eine Berechtigung verfügen, die abhängig davon, ob Printer oder printerShare verwendet wird, Zugriff auf "Drucker abrufen" oder "Druckerfreigabe abrufen" gewährt.

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

HTTP-Anforderung

So erstellen Sie eine Uploadsitzung mithilfe des Druckers:

POST /print/printers/{id}/jobs/{id}/documents/{id}/createUploadSession

So erstellen Sie eine Uploadsitzung mit printerShare (wird nur mit delegierten Berechtigungen unterstützt):

POST /print/shares/{id}/jobs/{id}/documents/{id}/createUploadSession

Anforderungsheader

Name Beschreibung
Authorization Bearer {token}. Erforderlich.
Content-Type application/json. Erforderlich.

Anforderungstext

Geben Sie im Anforderungstext ein JSON-Objekt mit den folgenden Parametern an.

Parameter Typ Beschreibung
properties printDocumentUploadProperties Stellt die Eigenschaften der hochzuladenden Binärdatei dar.

Der Wert der contentType-Eigenschaft im Anforderungstext sollte vom Printer/PrinterShare unterstützt werden. Sie können die unterstützten Inhaltstypen abrufen, indem Sie printerCapabilities des Druckers/printerShare abrufen.

Für die Konvertierung von OXPS in PDF müssen Sie application/oxps als contentType für Drucker/PrinterShare übergeben, der application/pdf unterstützt. Universal Print konvertiert OXPS in PDF, wenn alle folgenden Bedingungen erfüllt sind:

  1. Die Drucker-/Druckerfreigabe wird application/pdf in printerCapabilities unterstützt.
  2. Die Drucker-/Druckerfreigabe wird application/oxps in printerCapabilities NICHT unterstützt.
  3. Der Wert für die eigenschaft contentType im Anforderungstext ist application/oxps .

Antwort

Bei erfolgreicher Ausführung gibt die Methode den 200 OK Antwortcode und ein neues uploadSession-Objekt im Antworttext zurück.

Hinweis: Die uploadUrl-Eigenschaft, die als Teil des uploadSession-Antwortobjekts zurückgegeben wird, ist eine undurchsichtige URL für nachfolgende Abfragen zum Hochladen von PUT Bytebereichen der Datei. Es enthält das entsprechende Authentifizierungstoken für nachfolgende PUT Abfragen, die bis expirationDateTime ablaufen. Ändern Sie diese URL nicht.

Beispiele

Das folgende Beispiel zeigt, wie Sie eine Uploadsitzung erstellen, die Sie in nachfolgenden Dateiuploadvorgängen in das angegebene printDocument verwenden können.

Anforderung

POST https://graph.microsoft.com/v1.0/print/printers/{printerId}/jobs/{printJobId}/documents/{printDocumentId}/createUploadSession
Content-Type: application/json

{
  "properties": {
    "documentName": "TestFile.pdf",
    "contentType": "application/pdf", 
    "size": 4533322
  }
}

Antwort

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/v1.0/$metadata#microsoft.graph.uploadSession",
    "uploadUrl": "https://print.print.microsoft.com/uploadSessions/5400be13-5a4e-4c20-be70-90c85bfe5d6e?tempauthtoken={token}",
    "expirationDateTime": "2020-10-25T02:19:38.1694207Z",
    "nextExpectedRanges": [
        "0-4533321"
    ]
}