“很抱歉,此文件已被删除或移动”使用C#代码上传文件后在Microsoft Teams中打开文件时

问题描述

我一直在面对这个问题

对不起,此文件已被删除或移动

当我尝试在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);
}

请在文档参考下方找到。

https://docs.microsoft.com/en-us/graph/api/chatmessage-post?view=graph-rest-beta&tabs=csharp&viewFallbackFrom=graph-rest-1.0#example-4-file-attachments

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...