2014-02-14 75 views
0

我有一个silverlight应用程序,从亚马逊s3中检索文件。此时我正在使用SaveFileDialog将其保存到磁盘。从silverlight传递流到浏览器

我正在寻找更好的方式来保存文件。我已经看过并实施了隔离存储,但最终决定不使用它,因为所有的限制。

此外,silverlight限制保存在没有保存文件对话框的隔离存储之外的文件,所以我不能保存文件,然后将文件路径传递给浏览器。所以这是不可能的

HtmlPage.Window.Navigate(urlToFile, "_blank"); 

我现在有什么选择将此流传递给浏览器?

+0

对于要存储什么换呢?之后它是否应该提供给用户?如果它应该对用户可用,例如在他的下载文件夹中,你可以尝试在你的应用中显示一些链接。点击它会弹出正常的浏览器下载对话框。 – Eleasar

+0

该文件存储在Amazon S3中。 AWS SDK for .NET不适用于silverlight。此外,我需要验证请求,所以我不能把超链接到文件。由于silverlight的安全限制无法直接保存到下载文件夹,所以我必须显示保存文件对话框(我想绕过)。所以我留下的唯一选择是将Silverlight应用程序中的文件作为来自Amazon的流传输并以某种方式传递给网页。此外,只要用户可以在浏览器中查看它,它就应该可供用户使用,这并不重要。 –

+0

该文件是什么?你会在Silverlight中显示的内容(如电影或音频或图像)或用户需要某些外部软件(如MS Word或Photoshop等)的东西?在第一种情况下,你只需要使用像http://stackoverflow.com/questions/1789846/silverlight-load-image-with-filestream这样的东西,但对于第二种情况,他必须将其存储在本地并打开它(=文件保存对话框)或者你必须编写一些从亚马逊获取文件的web服务器(例如asp.net)代码,并让用户下载它未经授权的或使用iis/asp.net认证。 – Eleasar

回答

1

silverlight 4中有一个功能可以运行它out of the browser。在这种模式下你有elevated permissions。最令你感兴趣的是

文件系统访问。受信任的应用程序可以访问System.IO类型 以及Silverlight不可用的相关类型。这些 API提供对本地计算机上的用户文件夹中文件的直接读取和写入访问。有关详细信息,请参阅如何:在受信任的应用程序中访问本地文件系统 。

这个之外,还有没有其他的办法将文件保存到用户的桌面,而无需使用SaveFileDialog

+0

这就是我得出的结论。我不能从浏览器运行我的应用程序,所以这个选项不在桌面上。我发现了一个工作,正如我在这个问题下的评论中所提到的。 –