首页 文章

OneDrive中嵌入的共享文件夹

提问于
浏览
0

似乎您无法使用OneDrive SDK c#从OneDrive中嵌入的共享文件夹下载/上载文件 .

模拟行为的步骤:

  • 用户"A"与用户"B"共享名为"Shared01"的Onedrive文件夹,其权限为"modify";

  • 用户"B"将"Shared01"合并到自己的Onedrive中:文件夹"Shared01"出现在"B"的根目录中;

  • 使用c#SDK(OneDriveApiBrowser.sln)和用户"B"凭证,文件夹"Shared01"在根目录上正确显示,但是:

如果您在“Shared01”文件夹中导航,则不会显示存储在该文件夹中的文件;

您无法上传/下载或修改文件夹中的文件 .

此外,如果您尝试通过请求使用“Shared01”中包含的文件:

using (var stream = await this.oneDriveClient.Drive.Items[itemToOpen.Id].Content.Request().GetAsync())

别名:

GET /drive/items/{item-id}/content

您收到以下错误:

"{Code: itemNotFoundThrow site: 29a3.1155Message: Item does not exist}"

在过去,这个要求奏效了 .

1 回答

  • 0

    This API documentation解释了它,概念应该映射到您对SDK的使用 . 基本上,当您向驱动器添加共享文件夹时,实质上是添加指针 . 这些指针可以通过 remoteItem facet的存在来检测,它将包含共享文件夹( remoteItem.Id )的标识和该文件夹所在的驱动器( remoteItem.parentReference.driveId ) .

    要查询共享文件夹,您需要使用以下两条信息构建 drives 查询:

    oneDriveClient.Drives[{remoteItem.parentReference.driveId}].Items[{remoteItem.Id}]
    

    然后你可以让孩子们使用:

    oneDriveClient.Drives[{remoteItem.parentReference.driveId}].Items[{remoteItem.Id}].Children
    

    然后使用以下方式下载儿童:

    oneDriveClient.Drives[{remoteItem.parentReference.driveId}].Items[{remoteItem.Id}].Children[{child.name}]
    

    要么

    oneDriveClient.Drives[{remoteItem.parentReference.driveId}].Items[{child.Id}]
    

    在过去使用 driveremoteItem.Id 可能有效,但这绝对不是意图给出错误的驱动器的目标 .

相关问题