我想创建一个可以从托管Web服务器批量/批量下载文件的Silverlight 4(或5)应用程序。在客户端上,将向用户显示一个文件列表,从中可以选择一个或多个文件进行下载。从那时起,我想弄清楚这是如何工作的。我想避免多次提示用户(例如每个文件一次)。应该只有一个“另存为”提示,从那里下载应该执行。
以下是我最初的想法:
(1)在客户端保存文件
如果用户可以选择下载文件的“drop folder”,则将它们写入磁盘可能不会太困难。但是,我不知道在Silverlight中有任何方法可以做到这一点。隔离存储是第一个突然出现在我脑海中的东西,但是一旦文件被写入,用户就不容易到达那个位置...据我所知,只有SaveFileDialog,我当然不想提示用户输入每个文件的位置和名称。
(2)从服务器下载文件
如果我们能够以某种方式利用浏览器的内置(保存/打开)下载功能,这将是一个简单的选择。我发现了一些基本文章,演示了如何做到这一点,但我认为我们的场景变得复杂,因为有多个文件,用户选择批量下载的文件是动态的。在我看来,我想我正在考虑创建某种类型的“即时”zip / archive,其中包含用户选择下载的文件,然后将zip作为单个文件下载。
有关如何实施此类内容的任何想法或建议?我确信这是可能的,但这对我来说只是一个新领域。
谢谢!
答案 0 :(得分:1)
你完成了大部分的研究。每当您想要将任何数据下载到客户端计算机时,Silverlight都必须提示(SaveDialog),因为Silverlight应用程序在沙箱中运行,这意味着您无法在没有对话框提示的情况下访问任何本地文件和文件夹。
我认为解决方案最适合您在silverlight中下载文件,尝试将它们全部存储在内存中然后使用SharpZipLib进行Silverlight并尝试动态压缩文件。
http://liviutrifoi.wordpress.com/2011/03/22/silverlight-create-zip-file-with-folder/
问候。