如何在Silverlight中本地保存多个文件?

itc*_*chi 4 c# silverlight silverlight-4.0 local-storage

我的问题是我有一个LOB应用程序,它可以根据用户输入保存多个文件(仅在运行时已知的文件数).将此保存为单个文件并让用户将它们分开,或者将它们作为单个文件压缩是不幸的选择.

SaveFileDialog似乎一次只能保存1个文件.第三方控制可能是一种选择,但我还没有找到任何用于此目的的控件.谢谢!

dth*_*rpe 8

浏览器安全模型指南(Silverlight之外)禁止Web应用程序逻辑(脚本或其他)直接访问本地文件系统.

如果Web应用程序脚本可以将任意文件写入本地硬盘上的任意位置,请考虑恶意网站可能对您的计算机造成的破坏!

因此,Silverlight将您的代码与本地文件系统隔离开来.Silverlight管理"打开文件"或"保存文件"对话框,但出于安全原因,您的Web应用程序代码永远不会直接查看文件名的完整路径.Silverlight对话框仅支持一次处理一个文件名/路径.

Silverlight确实在本地计算机上提供了隔离存储,您的Web应用程序可以在其中写入多个文件.但是,如评论中所述,隔离存储在两个方向上是隔离的 - 它使Web应用程序与本地文件系统隔离,这使最终用户难以访问浏览器外部的隔离存储的内容.(很难使其对非技术用户不可行,但不足以将孤立存储称为"安全"免受恶意窥探).

如果没有编写自己的原生可执行浏览器扩展(对于您希望支持的每个不同浏览器品牌和版本)(或某些浏览器的非沙盒javascript插件),我认为Web应用程序无法推送数据在一个用户操作中方便在浏览器之外使用的多个本地文件.

  • @itchi:我怀疑如果存在这样的规范,http规范将负责多文件下载.Mime消息格式已经指定了与单个实体中的多文件内容的http兼容的格式.问题是这种下载没有浏览器支持. (2认同)