使用远程项目访问共享文件和文件夹
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" }
}
}
注意:driveId 和 ID 是必需的。
如果成功,服务将在响应中返回已创建的远程项的全部详细信息:
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 driveId 和 id,从而在文件夹中新建项。