Документ, загруженный в MS Teams с использованием API-интерфейса графа, поврежден

Я пытаюсь загрузить документ в 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, но безуспешно. Я не понимаю, что здесь может быть не так. Код довольно прост, основан на this документация. Любая помощь будет принята с благодарностью.


person Dheeraj Kesri    schedule 18.05.2018    source источник
comment
Не могли бы вы объяснить, что вы имеете в виду под тем, что мы можем загрузить файл и открыть его в Microsoft Word после исправления файла? Какое исправление вы делаете?   -  person Marc LaFleur    schedule 18.05.2018
comment
После загрузки файла из MS Teams, когда вы пытаетесь его открыть, MS Word сообщает вам, что файл поврежден. Также сказано, что word может попытаться исправить файл и отобразить содержимое. При этом вы по-прежнему сможете видеть содержимое файла.   -  person Dheeraj Kesri    schedule 20.05.2018


Ответы (1)


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

        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 Teams.

person Wajeed-MSFT    schedule 21.05.2018
comment
Это сработало. Спасибо за решение, но я также хотел понять, как мы можем заставить его работать с загрузкой файлов из нескольких частей. - person Dheeraj Kesri; 22.05.2018