anexo: createUploadSession

Namespace: microsoft.graph

Importante

As APIs na versão /beta no Microsoft Graph estão sujeitas a alterações. Não há suporte para o uso dessas APIs em aplicativos de produção. Para determinar se uma API está disponível na v1.0, use o seletor Versão.

Crie uma sessão de upload que permita que um aplicativo carregue iterativamente intervalos de um arquivo, de modo a anexar o arquivo a um item do Outlook. O item pode ser uma mensagem ou um evento.

Use esta abordagem para anexar um arquivo se o tamanho do arquivo estiver entre 3 MB e 150 MB. Para anexar um arquivo menor que 3 MB, faça uma POST operação na propriedade de navegação de anexos do item do Outlook; veja como fazer isso para uma mensagem ou para um evento.

Como parte da resposta, essa ação retorna uma URL de upload que você pode usar em consultas sequenciais PUT subsequentes. Os cabeçalhos de solicitação de cada PUT operação permitem especificar o intervalo exato de bytes a ser carregado. Isso permite que a transferência seja retomada, caso a conexão de rede seja interrompida durante o upload.

Veja a seguir as etapas para anexar um arquivo a um item do Outlook usando uma sessão de upload:

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

Confira anexar arquivos grandes a mensagens ou eventos do Outlook para obter um exemplo.

Dica

O Exchange Online permite que os administradores personalizem o limite de tamanho de mensagem para caixas de correio do Microsoft 365, incluindo quaisquer anexos de mensagens. Por padrão, esse limite de tamanho de mensagem é de 35 MB. Descubra como personalizar o tamanho máximo da mensagem para dar suporte a anexos maiores do que o limite padrão do seu locatário.

Importante

Fique atento a um problema conhecido se estiver anexando um arquivo grande a uma mensagem ou evento em uma caixa de correio compartilhada ou delegada.

Essa API está disponível nas seguintes implantações de nuvem nacional.

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

Permissões

Escolha a(s) permissão(s) marcada(s) como menos privilegiada(s) para essa API. Use uma permissão ou permissões com privilégios mais altos somente se o aplicativo exigir. Para obter detalhes sobre permissões delegadas e de aplicativo, consulte Tipos de permissão. Para saber mais sobre essas permissões, consulte a referência de permissões.

Tipo de permissão Permissões menos privilegiadas Permissões com privilégios mais elevados
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 upload para anexar um arquivo a um evento:

POST /me/events/{id}/attachments/createUploadSession

Para criar uma sessão de upload para anexar um arquivo a uma mensagem:

POST /me/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 os atributos do item a ser carregado e anexado. No mínimo, especifique o tipo de anexo (file), um nome e o tamanho do arquivo.

Resposta

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

Observação:

A propriedade uploadUrl retornada como parte do objeto de resposta uploadSession é uma URL opaca para consultas subsequentes PUT para carregar intervalos de bytes do arquivo. Ele contém o token de autenticação apropriado para consultas subsequentes PUT que expiram em expirationDateTime. Não personalize esta URL.

A propriedade nextExpectedRanges especifica o próximo local de byte do arquivo a ser carregado, por exemplo, "NextExpectedRanges":["2097152"]. Você deve carregar os bytes em um arquivo na ordem.

Exemplos

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

O exemplo a seguir mostra como criar uma sessão de upload que você pode usar em operações subsequentes de upload de arquivo para a mensagem especificada.

Solicitação

POST https://graph.microsoft.com/beta/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/beta/$metadata#microsoft.graph.uploadSession",
    "uploadUrl": "https://outlook.office.com/api/beta/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 upload para adicionar um anexo grande em linha a uma mensagem de rascunho

O exemplo a seguir mostra como criar uma sessão de upload que pode ser usada para adicionar um anexo embutido grande a uma mensagem de rascunho.

Para um anexo embutido, defina a propriedade trueisInline e use a propriedade contentId para especificar um CID para o anexo, conforme mostrado abaixo. No corpo da mensagem de rascunho, use o mesmo valor CID para indicar a posição em que deseja incluir o anexo usando uma tag de referência HTML CID, por exemplo <img src="cid:my_inline_picture">. Após o upload bem-sucedido do arquivo, a mensagem renderizada incluirá o anexo como parte do corpo da mensagem no local especificado.

Solicitação

POST https://graph.microsoft.com/beta/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-"
    ]
}