使用 POST 将项多部分上传到 OneDrive

使用多部分上传方法,可以在一个 API 调用中提供项的元数据和内容。 此方法仅支持请求上传不超过 4MB 的项。

注意:多部分上传仅适用于 OneDrive 个人版。

若要上传大文件,请参阅通过上传会话上传大文件

权限

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

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

HTTP 请求

POST /me/drive/items/{item-id}/children
POST /me/drive/root:/{item-path}/:children

请求正文(多部分内容 + 元数据上传)

多部分上传请求正文同时设置文件的元数据和内容。 如果请求中包含 Content-Type: multipart/related 头,则该服务会检测此方案。

有关多部分上传/相关编码的详细信息,请参阅 RFC 2387 多部分上传/相关编码文档。

已上传的文档必须只包含以下两个部分:

名称 类型 说明
metadata application/json 要在创建项时使用的元数据值。
content 二 进 制 要创建的项的二进制内容。

如果除以上两个部分外还有其他部分,请求将遭拒。 每个部分必须在 头中指定 Content-Disposition 值,以指明是哪个部分。 虽然各部分可以按任意顺序排列,但应先指定元数据部分。

POST /drive/items/{folder-id}/children
Content-Type: multipart/related; boundary="A100x"

--A100x
Content-ID: <metadata>
Content-Type: application/json

{
  "name": "newfile.txt",
  "file": {},
  "@microsoft.graph.sourceUrl": "cid:content",
  "@microsoft.graph.conflictBehavior": "rename"
}

--A100x
Content-ID: <content>
Content-Type: text/plain

Contents of the file to be uploaded.

--A100x--

注意: 可以对项元数据使用 Instance 属性,从而控制在要上传的文件与现有文件同名时的行为。 默认情况下,如果与现有项同名,上传将失败。

响应

如果成功,此方法将在响应正文中返回新建文件的 driveItem 资源

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

{
  "id": "0123456789abc",
  "name": "newfile.txt",
  "file": { }
}

错误响应

请阅读 错误响应 主题,了解有关如何返回错误的详细信息。

注解

OneDrive for Business、SharePoint Online 和 SharePoint Server 2016 不支持多部分上传方法。