使用远程项目访问共享文件和文件夹

OneDrive 支持将共享文件夹添加到驱动器中,以便可以更轻松地从共享文件夹访问内容。 将共享文件夹添加到 OneDrive 后,此文件夹显示在根中,它的内容使用 OneDrive 同步客户端进行同步。

枚举项集合时,共享文件夹显示为含 remoteItem Facet 的项。 此 Facet 包括使用 OneDrive API 访问共享文件夹内容所需的信息。

将共享文件夹添加到用户驱动器

必须先满足以下要求,然后才能将共享文件夹添加到用户驱动器:

  • 用户对共享文件夹拥有显式权限,并且不是通过链接访问共享文件夹。
  • 应用需要获取对将向其中添加共享文件夹的驱动器的读/写权限。

注意:只能将共享文件夹添加到用户驱动器根。

若要将共享文件夹添加到驱动器,应用需要向驱动器根集合发出 POST 请求,其中包含 remoteItem Facet 中的共享文件夹详细信息。 例如:

POST /drive/root/children
Content-Type: application/json

{
  "name": "Team Documents",
  "remoteItem": {
      "id": "12345abcde!1221",
      "parentReference": { "driveId": "12345abcde" }
  }
}

注意:driveIdID 是必需的。

如果成功,服务将在响应中返回已创建的远程项的全部详细信息:

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

{
  "id": "98765432!12399",
  "name": "Team Documents",
  "remoteItem": {
    "id": "12345abcde!1221",
    "parentReference": {
      "driveId": "12345abcde"
    },
    "folder": { "childCount": 15 }
  },
  "lastModifiedDateTime": "2015-08-10T13:47:11Z",
  "createdDateTime": "2015-08-10T13:47:11Z",
}

从用户驱动器中移除共享文件夹

若要移除共享文件夹,只需删除远程项即可:

DELETE /drive/items/{local-item-id}

如果成功移除共享文件夹,将返回“204 无内容”。 这不会删除共享文件夹或其中包含的项。

HTTP/1.1 204 No Content

枚举共享文件夹的内容

远程项提供调用所表示的实际项所需的信息。 远程项是用户驱动器中相应项的占位符,但无法像用户驱动器中的项一样访问。 例如,请求获取远程项的子项集合会导致服务器出错。

在此示例中,假设远程项如下:

{
  "id": "98765432!12399",
  "name": "Team Documents",
  "remoteItem": {
    "id": "12345abcde!1221",
    "parentReference": {
      "driveId": "12345abcde"
    }
  },
  "lastModifiedDateTime": "2015-08-10T13:47:11Z",
  "createdDateTime": "2015-08-10T13:47:11Z"
}

若要枚举此共享文件夹的内容,请使用 remoteItem 属性构造请求,以请求获取远程驱动器中的共享文件夹。

GET /drives/{drive-id}/items/{item-id}/children

此示例通过调用共享文件夹的父驱动器,返回共享文件夹的子项。

HTTP/1.1 200 OK
Content-Type: application/json

{
  "value":
  [
    {
      "id": "12345abcde!9912",
      "name": "Team Roster.xlsx",
      "file": {  },
      "size": 90122
    }
  ]
}

将 Delta 用于远程项

如果在包含共享文件夹的驱动器中使用 delta,响应中会返回共享文件夹本身,但不会返回共享文件夹中包含的项。 每个共享文件夹都需要单独调用 delta,以及单独缓存的 delta 令牌。

将项移到共享文件夹

OneDrive API 不支持将项移动或复制到共享文件夹中。 可以使用常规上传操作,并定位 remoteItem driveIdid,从而在文件夹中新建项。