attachment: createUploadSession

Espacio de nombres: microsoft.graph

Cree una sesión de carga que permita a una aplicación cargar iterativamente intervalos de un archivo, con el fin de adjuntar el archivo al elemento de Outlook especificado. El elemento puede ser un mensaje o evento.

Use este enfoque para adjuntar un archivo si el tamaño del archivo está entre 3 MB y 150 MB. Para adjuntar un archivo de menos de 3 MB, realice una POST operación en la propiedad de navegación de datos adjuntos del elemento de Outlook; vea cómo hacerlo para un mensaje o para un evento.

Como parte de la respuesta, esta acción devuelve una dirección URL de carga que puede usar en consultas secuenciales PUT posteriores. Los encabezados de solicitud para cada PUT operación permiten 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.

Estos son los pasos para adjuntar un archivo a un elemento de Outlook mediante una sesión de carga:

  1. Cree una sesión de carga.
  2. En esa sesión de carga, carga iterativamente intervalos de bytes (hasta 4 MB cada vez) hasta que se hayan cargado todos los bytes del archivo y el archivo esté asociado al elemento especificado.
  3. Guarde el identificador de los datos adjuntos para el acceso futuro.
  4. Opcional: elimine la sesión de carga.

Vea adjuntar archivos grandes a mensajes o eventos de Outlook para obtener un ejemplo.

Sugerencia

Exchange Online permite a los administradores personalizar el límite de tamaño de mensajes para los buzones de Microsoft 365, incluidos los datos adjuntos de mensajes. De forma predeterminada, este límite de tamaño de mensaje es de 35 MB. Obtenga información sobre cómo personalizar el tamaño máximo del mensaje para admitir datos adjuntos mayores que el límite predeterminado para el inquilino.

Importante

Tenga en cuenta un problema conocido si va a adjuntar un archivo grande a un mensaje o evento en un buzón compartido o delegado.

Esta API está disponible en las siguientes implementaciones nacionales de nube.

Servicio global Gobierno de EE. UU. L4 Us Government L5 (DOD) China operada por 21Vianet

Permissions

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) Calendars.ReadWrite Mail.ReadWrite
Delegado (cuenta personal de Microsoft) Calendars.ReadWrite Mail.ReadWrite
Aplicación Calendars.ReadWrite Mail.ReadWrite

Solicitud HTTP

Para crear una sesión de carga para adjuntar un archivo a un evento:

POST /me/events/{id}/attachments/createUploadSession
POST /users/{id | userPrincipalName}/events/{id}/attachments/createUploadSession

Para crear una sesión de carga para adjuntar un archivo a un mensaje:

POST /me/messages/{id}/attachments/createUploadSession
POST /users/{id | userPrincipalName}/messages/{id}/attachments/createUploadSession

Encabezados de solicitud

Nombre Descripción
Authorization {token} de portador. Obligatorio. Obtenga más información sobre la autenticación y la autorización.

Cuerpo de la solicitud

En el cuerpo de la solicitud, proporcione un objeto JSON con los siguientes parámetros.

Parámetro Tipo Descripción
AttachmentItem attachmentItem Representa los atributos del elemento que se va a cargar y adjuntar. Como mínimo, especifique el tipo de datos adjuntos (file), un nombre y el tamaño del archivo.

Respuesta

Si se ejecuta correctamente, este método devuelve un 201 Created 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 personalice esta dirección URL.

La propiedad nextExpectedRanges especifica la siguiente ubicación de bytes de archivo desde la que cargar, por ejemplo, "NextExpectedRanges":["2097152"]. Debe cargar los bytes de un archivo en orden.

Ejemplos

Ejemplo 1: Creación de una sesión de carga para agregar datos adjuntos grandes a un borrador de mensaje

En el ejemplo siguiente se muestra cómo crear una sesión de carga que puede usar en operaciones de carga de archivos posteriores en el mensaje especificado.

Solicitud

POST https://graph.microsoft.com/v1.0/me/messages/AAMkADI5MAAIT3drCAAA=/attachments/createUploadSession
Content-type: application/json

{
  "AttachmentItem": {
    "attachmentType": "file",
    "name": "flower",
    "size": 3483322
  }
}

Respuesta

Nota: Se puede acortar el objeto de respuesta que se muestra aquí para mejorar la legibilidad.

HTTP/1.1 201 Created
Content-type: application/json

{
    "@odata.context": "https://graph.microsoft.com/v1.0/$metadata#microsoft.graph.uploadSession",
    "uploadUrl": "https://outlook.office.com/api/v1.0/Users('a8e8e219-4931-95c1-b73d-62626fd79c32@72aa88bf-76f0-494f-91ab-2d7cd730db47')/Messages('AAMkADI5MAAIT3drCAAA=')/AttachmentSessions('AAMkADI5MAAIT3k0uAAA=')?authtoken=eyJhbGciOiJSUzI1NiIsImtpZCI6IktmYUNIUlN6bllHMmNI",
    "expirationDateTime": "2019-09-25T01:09:30.7671707Z",
    "nextExpectedRanges": [
        "0-"
    ]
}

Ejemplo 2: Creación de una sesión de carga para agregar un archivo adjunto grande en línea a un mensaje de borrador

En el ejemplo siguiente se muestra cómo crear una sesión de carga que se puede usar para agregar un archivo adjunto en línea grande a un borrador de mensaje.

Para los datos adjuntos insertados, establezca la propiedad trueisInline en y use la propiedad contentId para especificar un CID para los datos adjuntos, como se muestra a continuación. En el cuerpo del mensaje de borrador, use el mismo valor CID para indicar la posición en la que desea incluir los datos adjuntos mediante una etiqueta de referencia HTML CID, por ejemplo <img src="cid:my_inline_picture">. Tras cargar correctamente el archivo, el mensaje representado incluirá los datos adjuntos como parte del cuerpo del mensaje en la ubicación especificada.

Solicitud

POST https://graph.microsoft.com/v1.0/me/messages/AAMkAGUwNjQ4ZjIxLTQ3Y2YtNDViMi1iZjc4LTMA=/attachments/createUploadSession
Content-type: application/json

{
  "AttachmentItem": {
    "attachmentType": "file",
    "name": "scenary",
    "size": 7208534,
    "isInline": true,
    "contentId": "my_inline_picture"
  }
}

Respuesta

Nota: Se puede acortar el objeto de respuesta que se muestra aquí para mejorar la legibilidad.

HTTP/1.1 201 Created
Content-type: application/json

{
    "@odata.context": "https://graph.microsoft.com/v1.0/$metadata#microsoft.graph.uploadSession",
    "uploadUrl": "https://outlook.office.com/api/gv1.0/users('a8e8e219-4931-95c1-b73d-62626fd79c32@72aa88bf-76f0-494f-91ab-2d7cd730db47')/messages('AAMkAGUwNjQ4ZjIxLTQ3Y2YtNDViMi1iZjc4LTMA=')/AttachmentSessions('AAMkAGUwNjQ4ZjIxLTAAA=')?authtoken=eyJhbGciOiJSUzI1NiIsImtpZCI6IjFTeXQ1bXdXYVh5UFJ",
    "expirationDateTime": "2021-12-27T14:20:12.9708933Z",
    "nextExpectedRanges": [
        "0-"
    ]
}