问题描述
我一直在面对这个问题
对不起,此文件已被删除或移动
当我尝试在Microsoft Teams中打开文件(word,PPT,Excel等)时,该文件已使用Microsoft Graph API成功使用c#代码上传。我可以从Microsoft Teams下载上载的文件,但在Microsoft Teams本身看不到。另外,我能够手动将同一文件上传到频道,并且已成功在Microsoft Teams中打开。
代码:
GraphServiceClient graphClient = new GraphServiceClient(authProvider);
List<ChatMessageAttachment> chatMessageAttachments = new List<ChatMessageAttachment>();
Guid guid = Guid.NewGuid();
chatMessage.Body.Content = chatMessage.Body.Content +
"<attachment id=" + "\"" + guid.ToString() + "\"" + "></attachment>";
ChatMessageAttachment chatMessageAttachment = new ChatMessageAttachment();
chatMessageAttachment.Id = guid.ToString();
chatMessageAttachment.Name = file.name;
chatMessageAttachment.ContentUrl = "https://{tenant}.sharepoint.com/sites/testTeam/Shared%20Documents/General" + "/" + file.name;
chatMessageAttachment.ContentType = "reference";
chatMessageAttachments.Add(chatMessageAttachment);
await graphClient.Teams[currentTeam.Id].Channels[currentChannel.Id].Messages
.Request()
.AddAsync(chatMessage);
有人可以在上传文件时建议代码中出了什么问题吗?
解决方法
最后,问题已解决。这是我们分配给chatMessageAttachment变量的GUID的问题,该GUID应该是SharePoint中上载文件的GUID,而不是新创建的文件。
这样,我就可以在Microsoft Teams本身中查看上载的文件。
更新代码:
GraphServiceClient graphClient = new GraphServiceClient(authProvider);
var chatMessage = new ChatMessage
{
Body = new ItemBody
{
ContentType = BodyType.Html,Content = "Hello World"
}
};
List<ChatMessageAttachment> chatMessageAttachments = new List<ChatMessageAttachment>();
using (var clientContext = new ClientContext(sharePointWebUrl))
{
clientContext.Credentials = new SharePointOnlineCredentials(userName,passWord);
clientContext.Load(clientContext.Web);
clientContext.ExecuteQuery();
Microsoft.SharePoint.Client.Web web = clientContext.Web;
Microsoft.SharePoint.Client.File spfile = clientContext.Web.GetFileByServerRelativeUrl(web.ServerRelativeUrl + "Shared%20Documents/General" + "/" + file.name);
clientContext.Load(spfile);
clientContext.ExecuteQuery();
Microsoft.SharePoint.Client.ListItem item = spfile.ListItemAllFields;
clientContext.Load(item);
clientContext.ExecuteQuery();
string fileGuid = item["UniqueId"].ToString();
chatMessage.Body.Content = chatMessage.Body.Content +
"<attachment id=" + "\"" + fileGuid + "\"" + "></attachment>";
ChatMessageAttachment chatMessageAttachment = new ChatMessageAttachment();
chatMessageAttachment.Id = fileGuid;
chatMessageAttachment.Name = file.name;
chatMessageAttachment.ContentUrl = "https://{tenant}.sharepoint.com/sites/testTeam/Shared%20Documents/General" + "/" + file.name;
chatMessageAttachment.ContentType = "reference";
chatMessageAttachments.Add(chatMessageAttachment);
chatMessage.Attachments = chatMessageAttachments;
await graphClient.Teams[currentTeam.Id].Channels[currentChannel.Id].Messages
.Request()
.AddAsync(chatMessage);
}
请在文档参考下方找到。