Cree una sesión de carga que permita a una aplicación cargar iterativamente intervalos de un archivo binario vinculado al documento de impresión.
Como parte de la respuesta, esta acción devuelve una dirección URL de carga que se puede usar en consultas secuenciales PUT posteriores. Los encabezados de solicitud para cada PUT operación se pueden usar para especificar el intervalo exacto de bytes que se van a cargar. Esto permite reanudar la transferencia, en caso de que se quite la conexión de red durante la carga.
Nota: La creación de una sesión de carga con permisos de aplicación solo se realizará correctamente si hay un objeto printTask en un processing estado en el trabajo de impresión asociado, iniciado por un desencadenador que creó la aplicación solicitante. Para obtener más información sobre cómo registrar un desencadenador de tareas, consulte Extensión de impresión universal para admitir la impresión a presión.
Elija el permiso o los permisos marcados como con privilegios mínimos para esta API. Use un permiso o permisos con privilegios superiores solo si la aplicación lo requiere. Para obtener más información sobre los permisos delegados y de aplicación, consulte Tipos de permisos. Para obtener más información sobre estos permisos, consulte la referencia de permisos.
Tipo de permiso
Permisos con privilegios mínimos
Permisos con privilegios más altos
Delegado (cuenta profesional o educativa)
PrintJob.Create
PrintJob.ReadWrite, PrintJob.ReadWrite.All
Delegado (cuenta personal de Microsoft)
No admitida.
No admitida.
Aplicación
PrintJob.ReadWrite.All
No disponible.
Solicitud HTTP
Para crear una sesión de carga mediante la impresora:
POST /print/printers/{id}/jobs/{id}/documents/{id}/createUploadSession
Para crear una sesión de carga con printerShare (compatible solo con permisos delegados):
POST /print/shares/{id}/jobs/{id}/documents/{id}/createUploadSession
Representa las propiedades del archivo binario que se va a cargar.
El valor de la propiedad contentType en el cuerpo de la solicitud debe ser compatible con printer/printerShare. Para obtener los tipos de contenido admitidos, obtenga las funcionalidades de impresora de printer/printerShare.
Para la conversión de OXPS a PDF , debe pasar application/oxps como contentType para printer/printerShare que admita application/pdf.
Impresión universal convierte OXPS en PDF, cuando se cumplen todas las condiciones siguientes:
El recurso compartido de impresora/impresora admite application/pdf en printerCapabilities.
El recurso compartido de impresora/impresora NO es compatible con application/oxpslas capacidades de impresora.
El valor de la propiedad contentType en el cuerpo de la solicitud es application/oxps.
Respuesta
Si se ejecuta correctamente, este método devuelve un 200 OK código de respuesta y un nuevo objeto uploadSession en el cuerpo de la respuesta.
Nota: La propiedad uploadUrl devuelta como parte del objeto de respuesta uploadSession es una dirección URL opaca para que las consultas posteriores PUT carguen intervalos de bytes del archivo. Contiene el token de autenticación adecuado para las consultas posteriores PUT que expiran por expirationDateTime. No cambie esta dirección URL.
Ejemplos
En el ejemplo siguiente se muestra cómo crear una sesión de carga que puede usar en las operaciones de carga de archivos posteriores en printDocument especificado.
// Code snippets are only available for the latest version. Current version is 5.x
// Dependencies
using Microsoft.Graph.Print.Printers.Item.Jobs.Item.Documents.Item.CreateUploadSession;
using Microsoft.Graph.Models;
var requestBody = new CreateUploadSessionPostRequestBody
{
Properties = new PrintDocumentUploadProperties
{
DocumentName = "TestFile.pdf",
ContentType = "application/pdf",
Size = 4533322L,
},
};
// To initialize your graphClient, see https://learn.microsoft.com/en-us/graph/sdks/create-client?from=snippets&tabs=csharp
var result = await graphClient.Print.Printers["{printer-id}"].Jobs["{printJob-id}"].Documents["{printDocument-id}"].CreateUploadSession.PostAsync(requestBody);
// Code snippets are only available for the latest major version. Current major version is $v1.*
// Dependencies
import (
"context"
msgraphsdk "github.com/microsoftgraph/msgraph-sdk-go"
graphprint "github.com/microsoftgraph/msgraph-sdk-go/print"
graphmodels "github.com/microsoftgraph/msgraph-sdk-go/models"
//other-imports
)
requestBody := graphprint.NewCreateUploadSessionPostRequestBody()
properties := graphmodels.NewPrintDocumentUploadProperties()
documentName := "TestFile.pdf"
properties.SetDocumentName(&documentName)
contentType := "application/pdf"
properties.SetContentType(&contentType)
size := int64(4533322)
properties.SetSize(&size)
requestBody.SetProperties(properties)
// To initialize your graphClient, see https://learn.microsoft.com/en-us/graph/sdks/create-client?from=snippets&tabs=go
createUploadSession, err := graphClient.Print().Printers().ByPrinterId("printer-id").Jobs().ByPrintJobId("printJob-id").Documents().ByPrintDocumentId("printDocument-id").CreateUploadSession().Post(context.Background(), requestBody, nil)
// Code snippets are only available for the latest version. Current version is 6.x
GraphServiceClient graphClient = new GraphServiceClient(requestAdapter);
com.microsoft.graph.print.printers.item.jobs.item.documents.item.createuploadsession.CreateUploadSessionPostRequestBody createUploadSessionPostRequestBody = new com.microsoft.graph.print.printers.item.jobs.item.documents.item.createuploadsession.CreateUploadSessionPostRequestBody();
PrintDocumentUploadProperties properties = new PrintDocumentUploadProperties();
properties.setDocumentName("TestFile.pdf");
properties.setContentType("application/pdf");
properties.setSize(4533322L);
createUploadSessionPostRequestBody.setProperties(properties);
var result = graphClient.print().printers().byPrinterId("{printer-id}").jobs().byPrintJobId("{printJob-id}").documents().byPrintDocumentId("{printDocument-id}").createUploadSession().post(createUploadSessionPostRequestBody);
<?php
use Microsoft\Graph\GraphServiceClient;
use Microsoft\Graph\Generated\Print\Printers\Item\Jobs\Item\Documents\Item\CreateUploadSession\CreateUploadSessionPostRequestBody;
use Microsoft\Graph\Generated\Models\PrintDocumentUploadProperties;
$graphServiceClient = new GraphServiceClient($tokenRequestContext, $scopes);
$requestBody = new CreateUploadSessionPostRequestBody();
$properties = new PrintDocumentUploadProperties();
$properties->setDocumentName('TestFile.pdf');
$properties->setContentType('application/pdf');
$properties->setSize(4533322);
$requestBody->setProperties($properties);
$result = $graphServiceClient->escapedPrint()->printers()->byPrinterId('printer-id')->jobs()->byPrintJobId('printJob-id')->documents()->byPrintDocumentId('printDocument-id')->createUploadSession()->post($requestBody)->wait();
# Code snippets are only available for the latest version. Current version is 1.x
from msgraph import GraphServiceClient
from msgraph.generated.print.printers.item.jobs.item.documents.item.create_upload_session.create_upload_session_post_request_body import CreateUploadSessionPostRequestBody
from msgraph.generated.models.print_document_upload_properties import PrintDocumentUploadProperties
# To initialize your graph_client, see https://learn.microsoft.com/en-us/graph/sdks/create-client?from=snippets&tabs=python
request_body = CreateUploadSessionPostRequestBody(
properties = PrintDocumentUploadProperties(
document_name = "TestFile.pdf",
content_type = "application/pdf",
size = 4533322,
),
)
result = await graph_client.print.printers.by_printer_id('printer-id').jobs.by_print_job_id('printJob-id').documents.by_print_document_id('printDocument-id').create_upload_session.post(request_body)