Flash动作脚本可以读写本地文件系统吗?

问题描述:

我认为它只能访问网络,但不能访问本地文件系统,但从互联网有人说它可以在最新版本中,任何人都可以确认吗?它可以达到任意文件或只是一个特定的位置?Flash动作脚本可以读写本地文件系统吗?

谢谢。 斌

一般情况下,从网络服务器的SWF不能从客户端计算机读取文件。但它可以将用户选择的文件从客户机上传到服务器。特定于操作系统的对话框提示用户选择要上传到服务器的文件。因此,Flash无法读取任何需要的文件,只能读取用户明确允许的文件。

在Flash player 10之前,SWF没有直接访问正在上传文件的内容 - 它所做的只是用作选择文件并将其发送到服务器的界面。获取其内容的唯一方法是使用URLLoader将其从服务器发送回SWF。

然而从FP10开始,FileReference类有load()方法,允许你加载用户选择文件直接向SWF,而不是将其通过服务器。

类似的规则适用于下载 - 文件可以保存到用户的机器只有他们的许可,并在用户指定的位置和名称。在FP10之前,您只能将文件从服务器下载到客户端 - 如果必须将使用SWF创建的某个映像保存到客户端计算机,则必须将其发送到服务器,然后提示用户下载。从FP10开始,您可以直接从SWF写入数据(当然,需要获得用户的许可)。


除了这些,一个SWF可以在客户端机器,其是类似于浏览器cookie存储SharedObjects。存储共享对象不涉及用户的任何对话框或权限。以下是引用来自上面链接的livedocs页面。

本地共享对象有一些限制,在设计应用程序时需要考虑一些重要的限制。有时SWF文件可能不允许编写本地共享对象,有时存储在本地共享对象中的数据可能在您不知情的情况下被删除。 Flash Player用户可以管理可用于单个域或所有域的磁盘空间。当用户减少可用磁盘空间量时,可能会删除一些本地共享对象。 Flash Player用户还拥有隐私控制功能,可以防止第三方域(当前浏览器地址栏中域以外的域)读取或写入本地共享对象。

Flash播放器具有一个名为sandbox的安全机制,它保护用户本地文件,因为用户不希望Flash脚本访问您的私人文件。

有2种方式,你可以访问这些文件: 1)用户授权的Flash Player访问某个文件夹(右键点击Flash播放器 - >设置 - >高级 - >安全) 2)使用Adobe Flash Player和可执行的桥接来实现对文件系统的访问 - >这不是一个Web应用程序,而是用户安装的程序。

Flash有一个文件上传,可以帮助您让用户加载文件manualy你的程序是否有帮助

+1

我知道你的答案是很久以前的事。但是,该术语不是“sanbox”,而是“沙盒”,请参阅https://en.wikipedia.org/wiki/Sandbox_(computer_security)。来自“sanbox”的问题中的链接看起来已经死亡,并且转到通用页面。由于这个问题出现在我刚刚完成的谷歌搜索的第一页,并且您的答案仍然添加了一些有用的信息,因此可以很好地改进您的答案,使用“沙箱”并链接到类似wkipedia的内容。 – gbulmer 2016-04-11 17:12:10

+0

修正了,谢谢! – Eran 2016-04-14 18:25:09