attachment: createUploadSession

命名空间:microsoft.graph

创建允许应用迭代上载文件范围的上载会话,以便将文件附加到指定的Outlook项。 项目可以是消息事件

如果文件大小在 3 MB 到 150 MB 之间,则使用该方法附加文件。 若要附加小于 3 MB POST 的文件,请对 Outlook 项目的 attachments 导航属性执行一个操作;请参阅如何为邮件或 事件执行该操作

作为响应的一部分,此操作返回可用于后续顺序查询的上载 PUT URL。 通过每个操作的请求 PUT 标头,可以指定要上载的字节的准确范围。 这允许恢复传输,以防在上载过程中网络连接中断。

以下是使用上载会话将文件附加到Outlook项的步骤:

  1. 创建上载会话。
  2. 在此上载会话中,每次) 以迭代方式上载字节范围 (最多上载 4 MB,直到上载文件的所有字节,并且文件附加到指定项。
  3. 保存附件的 ID,供将来访问。
  4. 可选:删除上载会话。

有关示例,请参阅Outlook大文件附加到邮件或事件。

提示

Exchange Online管理员可自定义邮箱的邮件大小Microsoft 365包括任何邮件附件。 默认情况下,此邮件大小限制为 35 MB。 了解如何自定义 最大邮件大小 以支持大于租户默认限制的附件。

重要

如果要将大 文件附加到 共享或委派邮箱中的邮件或事件,请注意已知问题。

权限

要调用此 API,需要以下权限之一。要了解详细信息,包括如何选择权限的信息,请参阅权限

权限类型 权限(从最低特权到最高特权)
委派(工作或学校帐户) Calendars.ReadWrite、Mail.ReadWrite
委派(个人 Microsoft 帐户) Calendars.ReadWrite、Mail.ReadWrite
应用程序 Calendars.ReadWrite、Mail.ReadWrite

HTTP 请求

若要创建上载会话以将文件附加到 事件

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

若要创建用于将文件附加到邮件的上载 会话,

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

请求标头

名称 说明
Authorization 持有者 {token}

请求正文

在请求正文中,提供具有以下参数的 JSON 对象。

参数 类型 说明
AttachmentItem attachmentItem 表示要上载和附加的项目的属性。 至少应指定附件 (file) 、名称和文件大小。

响应

如果成功,此方法在响应 201 Created 正文中返回 响应代码和新 uploadSession 对象。

注意

作为 uploadSession 响应PUT对象的一部分返回的 uploadUrl 属性是后续查询用于上载文件的字节范围的不透明 URL。 它包含 expirationDateTime 到期的后续PUT查询的适当身份验证令牌。 不自定义此 URL。

nextExpectedRanges 属性指定要上载的下一个文件字节位置,例如, "NextExpectedRanges":["2097152"]。 必须按顺序上传文件中的字节。

示例

示例 1:创建上载会话以将大附件添加到草稿邮件

以下示例演示如何创建可用于后续文件上载操作到指定邮件的上载会话。

请求

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

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

响应

注意: 为了提高可读性,可能缩短了此处显示的响应对象。

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

示例 2:创建上载会话以将较大的内线附件添加到草稿邮件

以下示例演示如何创建上载会话,该会话可用于向草稿邮件添加大型内嵌附件。

对于内联附件,将 isInline 属性 true 设置为 并使用 contentId 属性指定附件的 CID,如下所示。 在草稿邮件正文中,使用相同的 CID 值指示要使用 CID HTML 引用标记包含附件的位置,例如 <img src="cid:my_inline_picture">。 成功上载文件后,呈现的邮件将在指定位置包含附件作为邮件正文的一部分。

请求

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

响应

注意: 为了提高可读性,可能缩短了此处显示的响应对象。

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