使用Microsoft Graph将文件上载到SharePoint驱动器

时间:2016-12-22 14:28:17

标签: sharepoint microsoft-graph onedrive

我们正尝试使用Microsoft Graph rest API实现Web应用程序与SharePoint Online之间的集成。

具体来说,我们需要将文件上传到特定SharePoint站点的文档库(驱动器),这与当前用户默认驱动器不同。我们通过Azure AD获取访问令牌,可以访问所有文件。

我们可以使用/v1.0/me/drive/...将文件上传到任何驱动器,但不能在我们使用其他驱动器时上传。

例如:

var response = client.PutAsync(graphResourceUrl +
    "/beta/sharepoint/sites/" + siteCollSiteId +
    "/lists/" + listId +
    "/drive/root/children/" + fileName + ":/content",
    new ByteArrayContent(fileBytes)).Result;

var response = client.PutAsync(graphResourceUrl +
    "/beta/drives/" + "/" + listId +
    "/items/" + siteCollSiteId + "/" + fileName + ":/content",
    new ByteArrayContent(fileBytes)).Result;

var response = client.PutAsync(graphResourceUrl +
    "/beta/drives/" + listId + "/" + fileName + ":/content",
    new ByteArrayContent(fileBytes)).Result;

/v1.0/beta(对于包含SharePoint的路径),我们收到Not Implemented的错误回复。

我们可能做错了什么?是否尚未使用Microsoft Graph(/me除外)?

2 个答案:

答案 0 :(得分:4)

为了使用v1.0获取驱动器的所有文件,首先需要获取访问令牌(我看到你已经通过了),然后获取'drive-id'并使用以下内容URL(注意:它不是'驱动'它是'驱动'):

https://graph.microsoft.com/v1.0/drives/{drive-id}/root/children

要获取驱动器ID,我使用邮递员发出以下GET请求,这将列出网站上的所有驱动器,您将能够获取该驱动器的ID:

https://graph.microsoft.com/v1.0/sites/{tenant}.sharepoint.com:{path-to-site(ie: /sites/HR)}:/drives

要回答有关上传文件的问题,您将向以下网址发出PUT请求:

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

您需要设置两个必需的标题:

  • 授权
  • 内容类型

接下来,您将文件的二进制流传递到请求正文中。

其他有用的商品

获取文件夹中的所有文件:

https://graph.microsoft.com/v1.0/drives/{drive-id}/root:/{folder-name}:/children

获取OneDrive用户的内容:

https://graph.microsoft.com/v1.0/me/drive/root/children

参考: https://developer.microsoft.com/en-us/graph/docs/api-reference/v1.0/api/driveitem_put_content#example-upload-a-new-file

答案 1 :(得分:1)

:移除:/content 通常,我最好首先获取sp库的driveId,然后使用/v1.0/drive/{driveId} /

在v1.0端点上工作