Как создать поток для сохранения документа Word в удаленном месте? - PullRequest
3 голосов
/ 29 марта 2019

Я работаю над проектом Word AddIn. Я пытаюсь сгенерировать MmoryStream, чтобы сохранить этот поток в удаленном месте. В основном, что я должен сделать, это взять содержимое ActiveDocument с помощью Globals.ThisAddIn.Application.ActiveDocument.WordOpenXML и сохранить его в удаленном месте.

Теперь для этого я преобразую всю строку, которую получаю со свойством WordOpenXML, в MemoryStream с помощью этого кода .

После этого я передаю этот MemoryStream в HttpContent, и для этого я написал код ниже.

public async Task<HttpResponseMessage> PostDocumentAsync(SendAttachement sendAttachement)
        {
            if (sendAttachement == null)
            {
                throw new ArgumentNullException(nameof(sendAttachement));
            }

            using (var _client = new HttpClient(clientHandler, false))
            {
                _client.Timeout = new TimeSpan(0, 30, 0);
                _client.BaseAddress = _URLParams.HostName;
                _client.DefaultRequestHeaders.Accept.Clear();
                _client.DefaultRequestHeaders.Add("UserNameOrEmail", Settings.Default.UserName);
                _client.DefaultRequestHeaders.Add("Password", Settings.Default.Password);
                _client.DefaultRequestHeaders.Add("User-Agent", "Word-Addins");
                ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls12;
                MultipartFormDataContent form = new MultipartFormDataContent();

                foreach (var contentItem in sendAttachement.Contents)
                {
                    HttpContent content = contentItem.streamContent;
                    content.Headers.ContentDisposition = new ContentDispositionHeaderValue("form-data")
                    {
                        FileName = contentItem.FileName
                    };
                    form.Add(content);
                }


                var uri = _URLParams.APIPath + "/" + _URLParams.AbsolutePath + "?ClientId=" + sendAttachement.ClientId + "&RoomId=" + sendAttachement.RoomId + "&FolderId=" + sendAttachement.FolderId + "&ConflictStatus=" + sendAttachement.ConflictStatus;

                return await _client.PostAsync(uri, form);

            }
        }

Выше код дает мне 200 OK, но когда я загружаю загруженный файл, он дает мне ошибку, что Microsoft Word cannot open this document because some part of this file is missing is invalid.

Теперь я не могу понять, создаю ли я неправильный / поврежденный поток или что-то еще.

Извините за этот глупый вопрос, но я попробовал как можно больше решений, которые мог бы сделать.

...