【问题标题】:Microsoft Graph: Uploading files to shared with me folder on OneDrive?Microsoft Graph:将文件上传到 OneDrive 上与我共享的文件夹?
【发布时间】:2018-01-07 22:26:23
【问题描述】:
我能够使用this 方法成功上传到共享文档文件夹。但我正在寻找一种将文件上传到 OneDrive 上 Shared WithMe 文件夹的方法。
是否可以上传到 OneDrive 上的“/Shared WithMe”文件夹?如果是这样,哪种是 PUT(小文件)或 POST(上传会话)的正确语法?我花了很多时间来解决这个问题,但没有运气。
任何帮助将不胜感激。
【问题讨论】:
标签:
microsoft-graph-api
onedrive
【解决方案1】:
我用这种方法取得了成功:
PUT /drives/{driveid}/items/{itemid}/content
我能够从 DriveItem 实体中检索到 driveid 和 itemid。对于给定的DriveItem,driveid 位于 DriveItem.RemoteItem.ParentReference.DriveId (ItemReference docs),itemid 位于 DriveItem.RemoteItem.Id (RemoteItem docs)。
似乎需要 Files.ReadWrite.All 权限。
这种方法在 UWP C# Graph SDK 中适用于我。
【解决方案2】:
补充@Mark Scott 的回答:
首先,我从与我共享的文件 URI 响应中获得了 driveId 和 itemId:
GET /me/drive/sharedWithMe
要使用共享 URI 上传文件,我需要将其更改为包含文件名和 : 上传 URI 字符。所以,我的 URI 是:
PUT /drives/{driveid}/items/{itemid}:/FILE_NAME.EXTENSION:/content
这样可以将文件上传到您知道Id 的文件夹中。但你可以走得更远!此外,可以使用已知文件夹Id 作为根并指定上传文件的路径。这很棒,因为在您指定的路径中自动创建文件夹..`
PUT /drives/{driveid}/items/{itemid}:/FOLDER/CHILD FOLDER/FILE_NAME.EXTENSION:/content
最后,这会将您的文件上传到:KNOWN_FOLDER_ID_NAME/FOLDER/CHILD FOLDER/FILE_NAME.EXTENSION
额外提示:当您在文件夹中时,您可以从 onedrive Web URL 获取共享文件夹 Id。网址是这样的:
https://onedrive.live.com/?id=YOUR_FOLDER_ID&cid=DONT_USE_THIS