Документ, загруженный в MS Teams с помощью Graph API, поврежден - PullRequest
0 голосов
/ 18 мая 2018

Я пытаюсь загрузить документ в Microsoft Teams с помощью Microsoft Graph (бета-версия), но документ будет поврежден после успешной загрузки.

Используя Graph, я сначала создаю группу, создаю команду на основе группы, добавляю некоторых членов команды и, наконец, загружаю документ в канал по умолчанию.

Все работает нормально, за исключением того, что загруженный документ поврежден и редактор Office Online не может его открыть.Однако мы можем загрузить файл и открыть в Microsoft Word после исправления файла.

Ниже приведен код, который я использую для загрузки документа ->

FileInfo fileInfo = 
    new FileInfo(@"F:\Projects\TestProjects\MSTeamsSample\MSTeamsSample\Files\Test File.docx");

var bytes = System.IO.File.ReadAllBytes(fileInfo.FullName);
var endpoint = $"https://graph.microsoft.com/beta/groups/{groupId}/drive/items/root:/General/{fileInfo.Name}:/content";

var fileContent = new ByteArrayContent(bytes);
fileContent.Headers.ContentType = 
    MediaTypeHeaderValue.Parse("application/octet-stream");

var requestContent = new MultipartFormDataContent();
requestContent.Add(fileContent, "File", fileInfo.Name);

var request = new HttpRequestMessage(HttpMethod.Put, endpoint);
request.Headers.Authorization = 
    new AuthenticationHeaderValue("Bearer", "<Access Token>");
request.Content = requestContent;
var client = new HttpClient();
var response = client.SendAsync(request).Result;

Я попытался изменить тип содержимогодо application/vnd.openxmlformats-officedocument.wordprocessingml.document но не повезло.Я не понимаю, что здесь может быть не так.Код довольно прост, основан на этой документации .Любая помощь будет высоко оценена.

1 Ответ

0 голосов
/ 21 мая 2018

Пожалуйста, попробуйте это:

        var filePath = @"F:\Projects\TestProjects\MSTeamsSample\MSTeamsSample\Files\Test File.docx";
        var fileName = Path.GetFileName(filePath);
        var fileStream = new FileStream(filePath, FileMode.Open, FileAccess.Read);
        var endpoint = $"https://graph.microsoft.com/beta/groups/{groupId}/drive/items/root:/General/{fileName}:/content";

        using (var client = new HttpClient())
        {
            using (var content = new StreamContent(fileStream))
            {
                content.Headers.Add("Content-Type", MimeMapping.GetMimeMapping(fileName));

                // Construct the PUT message towards the webservice
                using (var request = new HttpRequestMessage(HttpMethod.Put, endpoint))
                {
                    request.Content = content;

                    request.Headers.Authorization = new AuthenticationHeaderValue("Bearer", tokenResponse.Token);

                    // Request the response from the webservice
                    using (var response = await client.SendAsync(request))
                    {
                        // Check the response.
                    }
                }
            }
        }

Я могу видеть документ Word в редакторе команд Microsoft.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...