使用MemoryStream在远程位置c#

时间:2019-04-01 12:35:11

标签: c# interop memorystream word-addins

我正在从字符串生成MemoryStream并将其传递给另一种方法,该方法将以.docx文件的形式将该Stream保存在远程位置。

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。我传递给上述方法的字符串是我通过Globals.ThisAddIn.Application.ActiveDocument.WordOpenXML行获得的XML。

文件成功上传到远程位置,但是当我下载该文件时,MS Word抛出一个错误File is corrupted. Either part of file is missing or invalid(如下图所示)

enter image description here

我无法确定我正在生成的流是错误的/损坏了的,还是需要执行更多操作才能使此.docx文件有效?

很抱歉这个问题,有这么多问题,但没有一个会更有用。

1 个答案:

答案 0 :(得分:4)

以这种方式传递的XML无效的DOCX文件。实际的DOCX格式使用带有文件夹的压缩内容。您需要将文档从添加项保存到一个临时位置(最好使用GetTempPath,然后将文件从磁盘读取到内存流中,然后将其上传到任何需要的地方。