阅读Stream并打开该文档

时间:2010-10-15 12:01:58

标签: c# asp.net stream

我有一个流对象,其中我有一些文档,我知道它是什么文档,如何打开该文档而不将其保存到文件中。所以我想直接从流本身打开文档而不保存它。

怎么做?我在c#

中这样做

4 个答案:

答案 0 :(得分:0)

您可以使用MemoryStream仅在RAM中使用该文档。

答案 1 :(得分:0)

不幸的是,大多数程序(Word,Excel,Notepad,...)都需要一个文件名来打开文件。所以我认为你的问题没有真正的解决方案。

唯一的想法是写一个File System Filter Driver,它返回MemoryStream的虚拟文件名,但该驱动程序必须用C ++编写,并不是最容易做的。

答案 2 :(得分:0)

这是我做这样的事情,但我知道文件的名称。这个方法被调用到一个空的aspx页面(我的意思是没有任何类型的html标记,除了< @Page ... />行)

private void LoadAttachment()
    {
            byte[] ImageData = ... get data from somewhere ...

            Response.Buffer = true;
            String filename = "itakethis.fromdatabase";
            Response.AddHeader("Content-Disposition", "attachment;filename=" + filename);
            Response.ContentType = GetMimeType(filename);//you can try to extrapolate it from file extension
            if(ImageData.Length > 0)
                Response.BinaryWrite(ImageData);
            else
                Response.BinaryWrite(new byte[1]);
            Response.Flush();
            ApplicationInstance.CompleteRequest();
    }

`

答案 3 :(得分:0)

为什么不能保存文件?

我过去使用GetTempFilename效果很好。我不记得究竟是哪个类,可能是System.EnvironmentFile本身。无论如何,您可以确定该文件将位于系统定义的临时文件夹中,因此您可以在完成文件后安全地删除该文件。