通过 Microsoft Teams Graph 将文件上传到频道 Api

File Upload to Channel via Microsoft Teams Graph Api

我一直在尝试使用图表 Api 将文件上传到频道。我可以使用请求 https://graph.microsoft.com:443/v1.0/me/drive/root:/fileName:/content

成功上传到我的个人 OneDrive

但是我无法上传到频道。我尝试了很多组合,但总是收到无效请求。以下是我尝试过的一些请求:

https://graph.microsoft.com:443/v1.0/groups/groupID/drive/items/channelID:/iconfinder_13_3561846_32.png:/content

https://graph.microsoft.com:443/v1.0/groups/groupID/drive/items/channelName:/iconfinder_13_3561846_32.png:/content

我也试过各种方式输入频道ID:

xx:xxxxxxxxxxxxxxxxxxxxxxxxx@thread.tacv2 xxxxxxxxxxxxxxxxxxxxxxxxx@thread.tacv2 xx:xxxxxxxxxxxxxxxxxxxxxxxxx

我发现我做错了什么。对于遇到问题的任何其他人,您必须获取支持该频道的文件夹 ID。这是 C# 中的示例。

// Get the folder of the channel (driveItem)
var item = await graphClient.Teams[teamID].Channels[channelID].FilesFolder
.Request().GetAsync();

// Do the put request
var uploadRequest = graphClient
                //.Me.Drive.Root
                .Groups[teamID]
                .Drive
                .Items[item.Id]
                .ItemWithPath(file.FileName)
                .Content.Request()
                .PutAsync<DriveItem>(file.OpenReadStream());

我在这个话题上花了好几个小时。您的解决方案对我不起作用,但我终于完成了。为了拯救其他人,我也想分享我的解决方案:

我用它来获取频道的驱动器项目:

var request = graphClient.Teams[teamId].Channels[channelId].FilesFolder.Request().GetAsync();

然后上传:

var uploadRequest = graphClient.Drives[driveItem.ParentReference.DriveId].Items[driveItem.Id].ItemWithPath("testfile.pdf").Content.Request()
                        .PutAsync<DriveItem>(System.IO.File.OpenRead(filePath));

我的应用程序使用客户端密码进行身份验证。也许这会有所作为。