如何使用 MS Graph API 执行可恢复的上传到 SharePoint 站点(非根)子文件夹

How to perform a resumable Upload to a SharePoint Site (Not Root) Subfolder using MS Graph API

文档:

https://docs.microsoft.com/en-us/graph/api/driveitem-createuploadsession?view=graph-rest-1.0

我可以使用 sites/domain/drives api 获取子站点的驱动器 ID。使用这个和 driveId/root/children 我可以确认这个驱动器上的几个文件夹。

如果我使用 API POST /drives/{driveId}/items/{itemId}/createUploadSession 将 driveId 替换为驱动器 ID,将 itemId 替换为文件夹 ID,我得到以下错误

{
  "error": {
    "code": "nameAlreadyExists",
    "message": "Cannot create an upload session on a folder",
    "innerError": {
      "request-id": "609e17d5-b3f8-455d-9d0f-4849872d8cfa",
      "date": "2020-02-25T20:31:33"
    }
  }
}

如果文件夹ID不是ItemID,什么是ItemID?如何指定要将文件保存到的文件夹?还是子文件夹或文件夹? None 的 otpions 让我使用除 ItemID

以外的任何东西
POST /drives/{driveId}/items/{itemId}/createUploadSession
POST /groups/{groupId}/drive/items/{itemId}/createUploadSession
POST /me/drive/items/{itemId}/createUploadSession
POST /sites/{siteId}/drive/items/{itemId}/createUploadSession
POST /users/{userId}/drive/items/{itemId}/createUploadSession 

您问题中的请求选项只能用于使用文档的 id 上传现有文档的新版本。文件夹中没有文档,可以用较新的版本替换。因此,无法为文件夹创建上传会话。您需要在文件夹 ID 后指定文件名作为相对路径,以便为文件夹中的新文件创建上传会话:

https://graph.microsoft.com/v1.0/sites/{siteId}/drives/{driveId}/items/{folderId}:/{fileNameUploadFile}:/createUploadSession

您也可以使用文件夹名称代替文件夹 ID:

https://graph.microsoft.com/v1.0/sites/{siteId}/drives/{driveId}/root:/{folderName}/{fileNameUploadFile}:/createUploadSession