使用Microsoft Graph将文件上传到SharePoint驱动器
我们正在尝试使用Microsoft Graph rest API在Web应用程序和SharePoint Online之间实现集成.
We are trying to implement integration between a web application and SharePoint Online using Microsoft Graph rest API.
具体来说,我们需要将文件上传到特定SharePoint网站的文档库(驱动器),而不是当前用户默认驱动器.我们可以通过Azure AD获得访问令牌,并且可以访问所有文件.
Specifically, we need to upload a file to a specific SharePoint site's document library (drive), different than current user default drive. We get the access token through Azure AD with access to all files.
我们可以使用/v1.0/me/drive/...
将文件上传到任何驱动器,但是当我们使用其他驱动器时则不能.
We can upload files into any drive using /v1.0/me/drive/...
but not when we use another 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
的错误响应.
Both /v1.0
and /beta
(in the case of SharePoint containing path) we are getting an error response of Not Implemented
.
我们可能做错了什么?它是否还不能与Microsoft Graph(/me
除外)一起使用?
What could we be doing wrong? Is it not yet working with Microsoft Graph (other than /me
)?
为了使用v1.0获取驱动器的所有文件,您首先需要获取访问令牌(我看到您已经通过了该访问令牌) ),然后获取"drive-id"并使用以下网址(注意:它不是"drive",而是"drives"):
In order to get all the files of a drive using v1.0, you would first need to get an access token (which I see you are already passed that), then get the 'drive-id' and use the following URL(note: its not 'drive' it is 'drives'):
https://graph.microsoft.com/v1.0/drives/{drive-id}/root/children
要获取驱动器ID,我使用邮递员发出了以下GET请求,它将列出站点上的所有驱动器,您将能够获取该驱动器的ID:
To get the drive id, I made the following GET request using postman, this will list all the drives on the site and you will be able to get the ID of that drive:
https://graph.microsoft.com/v1.0/sites/{tenant}.sharepoint.com:{path-to-site(ie: /sites/HR)}:/drives
要回答有关上传文件的问题,您将向以下URL发出PUT请求:
To answer your question regarding Uploading files, you will make a PUT request to the following URL:
https://graph.microsoft.com/v1.0/drives/{drive-id}/root:/{folder-name}/{file-name.txt}:/content
您将需要设置两个必需的标题:
You will need to set two required headers:
- 授权
- 内容类型
接下来,您将把文件的二进制流传递到请求的主体中.
Next, you will pass the binary stream of the file into the body of the request.
其他有用的项目
获取文件夹中的所有文件:
Get all files inside of a folder:
https://graph.microsoft.com/v1.0/drives/{drive-id}/root:/{folder-name}:/children
获取用户OneDrive的内容:
Get content of users OneDrive:
https://graph.microsoft.com/v1.0/me/drive/root/children