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