Использование MemoryStream для записи файла .docx в удаленном месте c # - PullRequest
0 голосов
/ 01 апреля 2019

Я генерирую MemoryStream из строки и передаю его другому методу, который сохранит этот поток при удаленной загрузке в виде файла .docx.

public static MemoryStream GenerateStreamFromString(string s)
{
    MemoryStream stream = new MemoryStream();
    StreamWriter writer = new StreamWriter(stream);
    writer.Write(s);
    writer.Flush();
    stream.Position = 0;
    return stream;
}

Выше код предназначен для преобразования строки в MemoryStream.Строка, которую я передаю вышеописанному методу, - это XML, который я получаю Globals.ThisAddIn.Application.ActiveDocument.WordOpenXML строкой.

Файл успешно загружен в удаленное местоположение, но при загрузке этого файла MS Word выдает ошибку, File is corrupted. Either part of file is missing or invalid (Как показано на рисунке ниже)

enter image description here

Я не могу понять, является ли поток, который я генерирую, неправильным / поврежденным, или мне нужно выполнить какое-тоЕще одна операция, чтобы сделать этот .docx файл действительным?

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

1 Ответ

4 голосов
/ 01 апреля 2019

XML, переданный таким образом, не является допустимым файлом DOCX.Фактический формат DOCX использует сжатый контент с папками.Вам необходимо сохранить документ из надстройки во временном местоположении (лучше всего использовать GetTempPath , затем прочитать файл с диска в поток памяти и загрузить его в любое место.

...