1

为了在驱动器中创建一个新文件(包含一些内容的简单文本文件),我尝试使用 MS Graph 调用 API。

PUT /sites/{site-id}/drive/items/{parent-id}:/{filename}:/content

我要放置文件的驱动器名称为“myFolder”,并具有此 driveId :

b!e5bDF5eRbU2Y7P3gHeS-0F1abPhpWXdOvSUViyWpqX876IbeJvIPS5-tf--QTQiz

此驱动器位于根站点中。

这里 :

  • {site-id}:“根”
  • {parent-id} :是作为父驱动器的 ID
  • {文件名}:文本.txt

如果我必须在子站点中创建这个文件,它会

  • {site-id}:/sites/{subsite-id}/drive/items/{parent-id}:/{filename}:/content

所以理论上我的网址应该如下:

https://graph.microsoft.com/v1.0/sites/root/drives/b!e5bDF5eRbU2Y7P3gHeS-0F1abPhpWXdOvSUViyWpqX876IbeJvIPS5-tf--QTQiz:/text.txt:/content

这里 :

  • {site-id}:“根”
  • {parent-id} :是作为父驱动器的 ID
  • {文件名}:文本.txt

我还将请求标头 Content-Type 定义为 text/plain 我的问题是我检索到一条错误消息:

{
  "error": {
    "code": "BadRequest",
    "message": "Resource not found for the segment 'content'.",
    "innerError": {
      "date": "2020-06-26T14:19:11",
      "request-id": "812b7ee0-3ecb-4d41-a8c5-59419b086f51"
    }
  }
}
4

2 回答 2

3

这是预期的错误,因为要寻址驱动器(document library位于 SharePoint 中)中的文件,需要提供文件夹容器:

所以,而不是查询

https://graph.microsoft.com/v1.0/sites/root/drives/{drive-id}:/{file-name}:/content

它应该是

https://graph.microsoft.com/v1.0/sites/root/drives/{drive-id}/root:/{folder-path}/{file-name}:/content

其中文件夹路径对应Test于您的情况下的文件夹

参考

在 OneDrive 上的驱动器中寻址资源

于 2020-06-26T16:46:16.333 回答
1

您可以使用以下端点直接在子站点库中创建文件:

https://graph.microsoft.com/v1.0/sites/{sub-siteid}/drives/{driveid}/root:/FolderA/FileB.txt:/content

参考文档: https ://docs.microsoft.com/en-us/graph/api/driveitem-put-content?view=graph-rest-1.0&tabs=http#example-upload-a-new-file

如果您想获取子站点ID,可以参考:

演示请求: 在此处输入图像描述

于 2020-06-29T02:05:30.440 回答