Compartilhar via


anexo: createUploadSession

Namespace: microsoft.graph

Crie uma sessão de carregamento que permita que uma aplicação carregue iterativamente intervalos de um ficheiro, de modo a anexar o ficheiro ao item do Outlook especificado. O item pode ser uma mensagem ou evento.

Utilize esta abordagem para anexar um ficheiro se o tamanho do ficheiro estiver entre 3 MB e 150 MB. Para anexar um ficheiro com menos de 3 MB, faça uma POST operação na propriedade de navegação de anexos do item do Outlook; veja como fazê-lo para uma mensagem ou para um evento.

Como parte da resposta, esta ação devolve um URL de carregamento que pode utilizar em consultas sequenciais PUT subsequentes. Os cabeçalhos de pedido para cada PUT operação permitem-lhe especificar o intervalo exato de bytes a carregar. Isto permite que a transferência seja retomada, caso a ligação de rede seja removida durante o carregamento.

Seguem-se os passos para anexar um ficheiro a um item do Outlook através de uma sessão de carregamento:

  1. Criar uma sessão de carregamento.
  2. Nessa sessão de carregamento, carregue iterativamente intervalos de bytes (até 4 MB de cada vez) até que todos os bytes do ficheiro tenham sido carregados e o ficheiro seja anexado ao item especificado.
  3. Guarde o ID do anexo para acesso futuro.
  4. Opcional: elimine a sessão de carregamento.

Veja anexar ficheiros grandes a mensagens ou eventos do Outlook para obter um exemplo.

Dica

Exchange Online permite que os administradores personalizem o limite de tamanho da mensagem para caixas de correio do Microsoft 365, incluindo quaisquer anexos de mensagens. Por predefinição, este limite de tamanho de mensagem é de 35 MB. Saiba como personalizar o tamanho máximo da mensagem para suportar anexos maiores do que o limite predefinido para o seu inquilino.

Importante

Tenha em atenção um problema conhecido se estiver a anexar um ficheiro grande a uma mensagem ou evento numa caixa de correio partilhada ou delegada.

Esta API está disponível nas seguintes implementações de cloud nacionais.

Serviço global US Government L4 US Government L5 (DOD) China operada pela 21Vianet

Permissões

Escolha a permissão ou permissões marcadas como menos privilegiadas para esta API. Utilize uma permissão ou permissões com privilégios mais elevados apenas se a sua aplicação o exigir. Para obter detalhes sobre as permissões delegadas e de aplicação, veja Tipos de permissão. Para saber mais sobre estas permissões, veja a referência de permissões.

Tipo de permissão Permissões com menos privilégios Permissões com privilégios superiores
Delegado (conta corporativa ou de estudante) Calendars.ReadWrite Mail.ReadWrite
Delegado (conta pessoal da Microsoft) Calendars.ReadWrite Mail.ReadWrite
Aplicativo Calendars.ReadWrite Mail.ReadWrite

Solicitação HTTP

Para criar uma sessão de carregamento para anexar um ficheiro a um evento:

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

Para criar uma sessão de carregamento para anexar um ficheiro a uma mensagem:

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

Cabeçalhos de solicitação

Nome Descrição
Autorização {token} de portador. Obrigatório. Saiba mais sobre autenticação e autorização.

Corpo da solicitação

Forneça um objeto JSON com os seguintes parâmetros no corpo da solicitação.

Parâmetro Tipo Descrição
AttachmentItem attachmentItem Representa atributos do item a carregar e anexar. No mínimo, especifique o tipo de anexo (file), um nome e o tamanho do ficheiro.

Resposta

Se for bem-sucedido, este método devolve um 201 Created código de resposta e um novo objeto uploadSession no corpo da resposta.

Observação:

A propriedade uploadUrl devolvida como parte do objeto de resposta uploadSession é um URL opaco para as consultas subsequentes PUT carregarem intervalos de bytes do ficheiro. Contém o token de autenticação adequado para consultas subsequentes PUT que expiram por expirationDateTime. Não personalize este URL.

A propriedade nextExpectedRanges especifica a localização de bytes de ficheiro seguinte a carregar a partir de, por exemplo, "NextExpectedRanges":["2097152"]. Você deve carregar os bytes em um arquivo na ordem.

Exemplos

Exemplo 1: criar uma sessão de carregamento para adicionar um anexo grande a uma mensagem de rascunho

O exemplo seguinte mostra como criar uma sessão de carregamento que pode utilizar nas operações subsequentes de carregamento de ficheiros para a mensagem especificada.

Solicitação

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

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

Resposta

Observação: o objeto de resposta mostrado aqui pode ser encurtado para legibilidade.

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

Exemplo 2: criar uma sessão de carregamento para adicionar um anexo grande na linha a uma mensagem de rascunho

O exemplo seguinte mostra como criar uma sessão de carregamento que pode ser utilizada para adicionar um anexo inline grande a uma mensagem de rascunho.

Para um anexo inline, defina a propriedade isInline como true e utilize a propriedade contentId para especificar um CID para o anexo, conforme mostrado abaixo. No corpo da mensagem de rascunho, utilize o mesmo valor CID para indicar a posição em que pretende incluir o anexo com uma etiqueta de referência DE HTML CID, por exemplo <img src="cid:my_inline_picture">. Após o carregamento com êxito do ficheiro, a mensagem composta incluirá o anexo como parte do corpo da mensagem na localização especificada.

Solicitação

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

Resposta

Observação: o objeto de resposta mostrado aqui pode ser encurtado para legibilidade.

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