我有一个流对象,其中我有一些文档,我知道它是什么文档,如何打开该文档而不将其保存到文件中。所以我想直接从流本身打开文档而不保存它。
怎么做?我在c#
中这样做答案 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.Environment
或File
本身。无论如何,您可以确定该文件将位于系统定义的临时文件夹中,因此您可以在完成文件后安全地删除该文件。