显示byte []或流中的文件

时间:2009-12-01 08:32:49

标签: c# winforms stream bytearray

我有一个winforms应用程序,用于存储数据库中的文件内容。存储的文件可以是几乎任何类型(word,excel,PDF,text,image ...),用户可以选择要加载的任何类型的文件。

然后,用户可以查询数据库,找到一个文件,然后将其打开。

我从数据库中提取字节数组没有问题,无论是流还是字节数组。

理想情况下,我可以直接从字节数组或流中显示文件;目前我将其保存为临时文件,然后打开:

Process.Start(fileName);

如何从任何字节数组或流文件中显示带有关联应用程序的文件?

4 个答案:

答案 0 :(得分:3)

在Windows中,您唯一的选择就是完成您正在做的事情。 Outlook,Internet Explorer,Firefox,都这样做

答案 1 :(得分:0)

也许你想研究一下Memory Mapped File。

答案 2 :(得分:0)

你可以尝试打开包含它的目录,但是你现在正在做同样的事情..如果操作系统知道关联的应用程序,那么就没有问题了。

答案 3 :(得分:0)

如果将文件名与字节流一起存储在DB中,则可以从扩展名中确定文件类型。在这种情况下有两种选择:

  1. 使用注册表确定要使用的应用程序。有关详细信息,请查看bytes.com上的此对话。
  2. P / Invoke SHGetFileInfo以确定要使用的应用程序。
  3. NB:使用这两个选项,您仍然需要将文件数据写入磁盘上的临时文件,以便加载它。

    就我个人而言,无论如何,我认为你所做的事情可能是最简单的选择(除非你想为某些文件类型提供自定义查看器等)