2011-10-19 22 views
3

我在理解打开存储在数据库中的文件的最佳方式时遇到了一些小问题。该文件将作为字节数组存储在数据库的nvarbinary字段中。目前,当我想打开一个文件时,我使用了一个ASP.NET网页,将一个变量传递给该页面,并将该文件流写入该页面。这在使用Silverlight应用程序的浏览器版本时工作正常,但当浏览器不在时,我无法调用浏览器窗口打开,因为我无法访问dom。将Silverlight中的PDF和其他文档从浏览器中打开

如何在不调用浏览器窗口的情况下从Silvelright打开bytearray?我能够将bytearray和文件类型传递给Silverlight应用程序没有问题。我只是不知道如何显示它,一旦我有它..

谢谢!

回答

3

如果您的目标是Windows(启用完全信任而不是mac),则可以先将文件写入磁盘(在独立存储或“我的文档”中),然后使用WScript.Shell COM对象让操作系统打开文件。

在您的字节流保存到一个文件,并有该文件的位置,你可以这样做:

using (dynamic shell = AutomationFactory.CreateObject("WScript.Shell")) 
{ 
    shell.Run(fileLocation); //works similar to start -> run -> filename 
} 

如果你想利用现有的ASP页面,你可以通过它的URL shell.Run和操作系统将使用用户的默认浏览器打开该页面。

在Mac上,你可以做的最好的事情就是将文件保存到他们的用户目录,并让他们用finder手动导航并双击它。