`
junjie.li1985
  • 浏览: 50381 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

[转] flash如何同时访问本地文件系统和网络文件

    博客分类:
  • Flex
阅读更多
一直以来,由于处于安全上的考虑,flash一直无法对本地文件进行操作。目前针对该问题以经有了几种解决方案,如:利用MMSave函数保存数据,但需要调试环境的支持。结合Javascript保存数据,但有该方法有一个较大的缺点是,由于IE的限制,每次往本地保存数据时都IE都会弹出对话框询问,若装有杀毒软件的话,也会弹出警告的提示框。还有就是结合服务器端程序,如:asp,jsp等进行数据访问。在这里推荐一种使用SharedObject对象来进行数据访问的方法:

//注意这里的fooA,是要保存的文件名,后缀默认且必需为.sol
myObj = SharedObject.getLocal("fooA");         //生成一个本地共享对象
if (myObj.data.myObj == undefined) {         //如果该对象没有数据的场合
         trace("Storing Data, run me again");
         //以下是一个较复杂的数据结构
         //用来说明利用SharedObject对象也可以保存复杂的数据结构
         myObj = {};
         myarray = new Array();
         myarray.push({A:"106", B:"107", C:"108"});         //这是一个数据结构(要保存的数据1)
         myarray1 = new Array();
         myarray1.push({A:"1", B:"2", C:"3"});         //要保存的数据2
         //这里很令人困惑,其实这里的.fname和lname是任意写的你也可以写oname等
         myObj.fname = myarray;         //将数据放入数组中
         myObj.lname = myarray1;
         myObj.data.myObj = myObj;         //将数据赋值结共享对象
} else {
         trace("Retrieving Data");
         //取出数据文件.sol中的数据
         var firstname = myObj.data.myObj.fname;
         var lastname = myObj.data.myObj.lname;
         //由于保存的myObj.fname和.lname都是一个Array
         //所以取出来的myObj.fname也是一个Array
         trace("First Name: " + firstname[0]["A"]);
         trace("Last Name: " + lastname[0]["A"]);
}

     SharedObject(共享对象)可以用来存储任何Flash支持的数据类型,比如数字、字符串、数组和对象等等。SharedObject按存放位置可分为本地型(存在客户端)和远程型(存在服务器端)。本地型共享对象的扩展名为.sol。对于Windows98(me)用户来说,默认的存储路径是:Application Data\Macromedia\Flash Player\服务器域名路径\Flash电影文件名.swf;对于Windows2000(xp)用户来说,默认的存储路径是:Documents and Settings\[User]\Application Data\Macromedia\Flash Player\服务器域名路径\Flash电影文件名.swf。本地型共享对象只能将数据保存在默认路径下,而且扩展名只能是.sol。在网上有看到说该方法受文件大小的限制,最大为1K,但经过反复实验发现,该方法并不受文件大小限制。

================================================

Flash Player 8 已增强了安全模型,在该安全模型中,默认设置为不允许本地计算机上的 Flash 应用程序和 SWF 文件与 Internet 和本地文件系统通信。

在 Flash Player 8 中,本地 SWF 文件可以具有以下权限级别:

只访问本地文件(默认) 本地 SWF 文件可从本地文件系统和统一命名约定 (UNC) 网络路径读取内容。

只访问网络       本地 SWF 文件可以访问网络(如 Internet),但不能访问安装该文件的本地文件系统。

故CMP(CenFun Music Player)默认是不可以直接在本地播放网络音乐的。

在网上查找资料,除了使用非官方Flash Player可以播放外,还可以在您的电脑添加一个受信任配置文件来解决,方法如下:

新建一个文本文件,如命名为:TrustFiles.txt       用来存放受信用配置,在文件中添加内容,如下:

c:\
d:\
e:\
f:\

有几个分区就添加几个,然后保存,将此文件放到下面的目录即可:

C:\Documents and Settings\Administrator\Application Data\Macromedia\Flash Player\#Security\FlashPlayerTrust

其中C是你的操作系统盘,Administrator是您的操作系统用户名,注意对应到您的情况,后面的目录如果没有就新建一个。

============================================

仅做开发者本地测试用,方法均来自网络,欢迎大家添加。
---------
1.http://www.wiyiflash.com/bbs/showthread.asp?postid=4537
        一种方法是修改你的发布设置,将“本地访问安全性”修改为"只访问网络"。还有一种仅仅是为了本地测试方便,你可以在本地的设置中放一个信任配置文件,
windows XP路径在:C:\Documents and Settings\用户名\Application Data\Macromedia\Flash Player\#Security\FlashPlayerTrust
如果不存在FlashPlayerTrust文件夹就创建一个。打开记事本,写上你的swf所在的文件夹如:
F:\CeShi
然后保存为CeShi.cfg,放置到FlashPlayerTrust文件夹中


2.Flash 开发的配置文件 FlashPlayerTrust
        来自http://www.cbmland.com/blog.php?archive/2006-06-0

自从flash8出世就收紧了安全策略。默认本地域不能访问网络。开发时确带来不少麻烦。今写了一个cmd文件来解决这个问题。一劳永逸,共享出来。下载下来双击既可。

允许c:d:e:f:盘上的任何Flash访问网络。也可以自己修改。仅供开发者使用!!!(only for 2000/XP)

rem FlashFlashPlayerTrust.cmd

c:

cd %windir%/system32/Macromed/Flash

md FlashPlayerTrust

cd FlashPlayerTrust

echo c: >myTrustFiles.cfg

echo d: >>myTrustFiles.cfg

echo e: >>myTrustFiles.cfg

echo F: >>myTrustFiles.cfg


cd %userprofile%/Application Data/Macromedia/Flash Player/#Security

md FlashPlayerTrust

cd FlashPlayerTrust

echo c: >myTrustFiles.cfg

echo d: >>myTrustFiles.cfg

echo e: >>myTrustFiles.cfg

echo F: >>myTrustFiles.cfg

===========================================

这个界面大家都应该碰到过吧。自从flash8出世就收紧了安全策略。默认本地域不能访问网络。开发时确带来不少麻烦。今写了一个cmd文件来解决这个问题。一劳永逸,共享出来。下载下来双击既可。

允许c:d:e:f:盘上的任何Flash访问网络。也可以自己修改。仅供开发者使用!!!(only for 2000/XP)

rem FlashFlashPlayerTrust.cmd

c:

cd %windir%/system32/Macromed/Flash

md FlashPlayerTrust

cd FlashPlayerTrust

echo c: >myTrustFiles.cfg

echo d: >>myTrustFiles.cfg

echo e: >>myTrustFiles.cfg

echo F: >>myTrustFiles.cfg

cd %userprofile%/Application Data/Macromedia/Flash Player/#Security

md FlashPlayerTrust

cd FlashPlayerTrust

echo c: >myTrustFiles.cfg

echo d: >>myTrustFiles.cfg

echo e: >>myTrustFiles.cfg

echo F: >>myTrustFiles.cfg

================================================




于是我决定制作这个小东东.
直接通过Windows右键菜单来修改SWF的安全策略:

点击下载(download:104K)
注:菜单命令可将同一目录下所有SWF文件进行批量更新.

SWF 在 Flash Player 8 表现出四种安全沙盒类型:
1,Remote (通过HTTP URL访问的SWF) 简单说就是放在网上的SWF(本地虚拟站点也算).
安全机制与Flash Player 6相同(crossdomain.xml)

2,Local-with-filesystem 默认方式,可访问本地文件系统,但不能与网络通讯.
也就是这种本地使用getURL()会看到安全提示对话框.

3,Local-with-networking 可以访问网络,但不能访问本地文件系统.
可以载入同一目录下的SWF: a.loadMovie("b.swf");
但不能这样:a.loadMovie("sub/b.swf");或a.loadMovie("c:\b.swf");
(上两种可通过 Flash Local Content Updater 直接转换)

4,Local-trusted (通过Settings Manager指定过的本地SWF.这种权限最大.
相当于Local-with-filesystem-with-network)

范例(安全沙盒类型检测):
::URL::http://dengjie.com/studio8/sandbox.swf
(试试把这个文件下载到本地,再看看显示结果.)

======================================

Flash Player 有几种不同的安全性沙箱。每个安全性沙箱确定 SWF 文件如何与本地文件系统、网络或如何同时与本地文件系统和网络交互。

默认的可以设置为只访问网络,或者只访问本地,如果要同时访问,那么要创建如下配置文件。

创建面向 Flash 开发的配置文件

Flash 8 创作工具在您的硬盘上设置了一个标志,将您标识为开发人员,使您可以使用"全局安全设置"面板面向开发人员的特定版本,而不是面向用户的"全局安全设置" 面板。此标志位于硬盘上的 FlashAuthor.cfg 文件中,该文件在安装 Flash Basic 8 和 Flash Professional 8 创作工具时自动安装。
FlashAuthor.cfg 文件所在目录如下:

Windows     boot disk\Documents and Settings\\Application Data\Macromedia\Flash Player\#Security

Macintosh /Users//Library/Preferences/Macromedia/Flash Player/#Security/

默认情况下,该文件设置为 LocalSecurityPrompt=Author,表示在没有安装创作工具时您在计算机上看到的警告将您视为 Flash 开发人员而非用户。

您可以以最终用户的身份测试本地应用程序,并且可以看到最终用户看到的警告对话框。为此,请在文本编辑器中打开 FlashAuthor.cfg,并将 FlashAuthor.cfg 中的 LocalSecurityPrompt 更改为如下所示:

LocalSecurityPrompt=User

对于设计或开发过程中的其他开发人员或在其本地硬盘上测试 Flash 应用程序但没有安装 Flash 8 创作工具的用户,您可能需要为他们提供将 LocalSecurityPrompt 设置为 Author 的 FlashAuthor.cfg 文件。通过本地部署内容有助于您模拟最终用户体验。

注意:如果删除了 FlashAuthor.cfg 文件,则启动 Flash 8 创作工具时将重新创建该文件。

在硬盘上的 #Security 目录中,您可以创建一个 FlashPlayerTrust 目录,其中可以存储唯一的配置文件。您可以在这些文件内指定硬盘上要信任的目录或应用程序。此目录不需要管理访问权限,因此用户不具有管理权限也可以设置 SWF 文件的权限并测试应用程序。

如果不指定一个目录,则您的内容可能无法达到预期效果。FlashPlayerTrust 目录中的配置文件包含目录路径。该文件可包含一些目录的列表,您可以向该文件添加新的路径。Flash Player 要求配置文件中每行包含一个路径。将任何以 # 符号开头的行(之前没有前导空格)视为注释。

创建配置文件以信任某个目录:

1.定位到硬盘上的 #Security 文件夹。
2.在 #Security 文件夹内部创建一个名为 FlashPlayerTrust 的文件夹。
3.使用文本编辑器在 FlashPlayerTrust 目录中创建一个新文件,并将其另存为 myTrustFiles.cfg。 您可以对该配置文件使用任何唯一的名称。
4.定位到测试 Flash 应用程序的目录。
5.在文件中键入或粘贴每个目录路径(硬盘上的任何目录路径),一行一个目录路径。您可以在不同行上粘贴多个目录路径。完成时,文件将看起来如下所示:
C:\Documents and Settings\\My Documents\files\
C:\Documents and Settings\\My Documents\testapps\
6.保存对 myTrustFiles.cfg 的更改。
7.测试从您添加到该文件的目录中访问本地和网络文件的文档。

现在,此目录中保存的 Flash 应用程序就可以访问本地文件和网络了。

每个配置文件中可以保存大量目录路径,FlashPlayerTrust 目录中也可以保存大量 *.cfg 文件。

在运行一下刚才无法正确访问本地和网络的SWF文件,你发现,已经可以访问了。
分享到:
评论

相关推荐

    如何修改flash访问本地文件权限.txt

    ### 如何修改Flash访问本地文件权限 在使用Flash Player进行多媒体内容开发时,有时会遇到无法访问本地文件的问题。这主要是因为Flash Player出于安全考虑,默认限制了对本地文件系统的访问。为了解决这一问题,...

    flash air 打开本地文件

    总的来说,Flash Air通过提供对本地文件系统和操作系统功能的访问,使得开发者能够创建具有强大功能的跨平台应用,包括打开和处理本地文件。了解并熟练运用这些技术对于开发高效、用户友好的应用程序至关重要。

    通过Arduino IDE向闪存文件系统上传文件

    总的来说,通过 Arduino IDE 向闪存文件系统上传文件是 IoT 应用中的常见操作,它为设备提供了存储和访问数据的能力。掌握这个技能对于开发智能硬件和构建本地 Web 服务的 Arduino 项目非常有用。

    Flash 文件上传组件

    在文件上传场景下,Flash Player提供了API来访问用户的本地文件系统,从而实现文件选择和上传。 2. **安全限制**:由于安全原因,JavaScript无法直接访问用户的本地文件系统。Flash弥补了这一不足,通过Flash ...

    flash录音文件

    7. **跨平台兼容性**:由于Flash Player曾经是大多数计算机的标准配置,Flash录音文件在不同操作系统和浏览器上的兼容性较好,但随着HTML5的普及,Flash逐渐被淘汰,尤其是在移动设备上。 8. **替代方案**:随着...

    Linux的虚拟文件系统.pdf

    ### Linux的虚拟文件系统 #### 一、概述 在现代操作系统中,文件系统扮演着至关重要的角色,它为...通过对VFS的理解,我们可以更好地掌握Linux文件系统的内部机制,这对于开发人员和系统管理员来说都是非常有价值的。

    FLASH读取txt文件实例

    值得注意的是,由于安全性限制,Flash Player仅允许用户交互式地访问本地文件,而不是程序直接读取。这意味着你需要用户通过`browse()`方法手动选择文件。此外,读取的文件内容会被转化为字符串,如果TXT文件很大,...

    FLASH文件下载工具

    总的来说,"FLASH文件下载工具"如FlashSaverV2,是帮助用户在浏览器环境中方便快捷地下载Flash内容的实用工具,尤其适用于那些需要在没有网络连接的情况下访问Flash内容的情况。随着技术的发展,虽然Flash的使用逐渐...

    Flash多文件上传加进度条

    在文件上传领域,Flash提供了一种方式来访问用户的本地文件系统,这在JavaScript的安全限制下是无法实现的。 多文件上传是指用户可以选择并上传多个文件,而不仅仅是一个。在Flash中,可以使用`FileReferenceList`...

    jsp+flash web摄像保存图片到本地

    8. 图像处理和保存:在JSP或Servlet中,可以使用Java的ImageIO库来读取和处理接收到的JPEG数据,将其保存为本地文件。此外,还可以使用如Apache Commons IO库来帮助处理文件I/O操作。 9. 安全性和权限:在实际应用...

    flash读取外部文件

    - 读取本地文件时,用户必须在Flash Player的安全提示中给予许可。 **性能优化:** - 使用`URLLoaderDataFormat.BINARY` 可以提高大文件的加载速度,但需要额外处理二进制数据。 - 考虑使用`event.bytesTotal` 和 `...

    ASP+flash文件上传程序(含flash fla源码)

    3. **文件上传组件**:在Flash中实现文件上传功能,通常使用FileReference类,它允许用户选择本地文件并通过HTTP POST请求发送到服务器。`upload.swf`是编译后的Flash影片,用户在浏览器中看到的就是这个文件。它与...

    java flash 文件上传 下载导入eclipse可以用

    Flash在其中的角色是提供用户友好的界面,让用户可以选择本地文件并发送到服务器。Flash支持XMLSocket或URLStream等技术进行数据传输,使得文件上传不受HTTP请求大小限制。Flash ActionScript代码会创建一个...

    FlashPlayer11版本地播放器-精简版

    因此,虽然这款精简版的FlashPlayer11本地播放器在一定程度上解决了离线播放的问题,但用户需谨慎使用,特别是在涉及网络安全和隐私的情况下,因为旧版本的Flash可能存在安全漏洞。 总的来说,FlashPlayer11本地...

    AS3将文本文件保存到本地 仅5行代码 多么简单

    `FileReference`类提供了访问本地文件系统的方法。通过这个实例,我们可以执行保存或打开文件等操作。 3. **添加事件监听器** ```as3 save_btn.addEventListener(MouseEvent.MOUSE_DOWN, saveTxt); ``` 为了...

    FLASH检测文件是否存在,带代码附内

    这个类允许我们与用户的本地文件系统进行交互,包括读取、写入和删除文件。以下是一个简单的示例,展示了如何使用FileReference的exists属性来检查文件是否存在: ```actionscript import flash.net.FileReference;...

    FLASH大文件上传组件

    同时,Flash的本地文件访问权限使得它可以读取大文件并按需分割。 **5. HTML5替代方案** 随着HTML5的普及,File API提供了原生的文件上传支持,包括分块上传、断点续传和进度条显示。例如,`Blob.slice()`方法用于...

    文件浏览_浏览Flash.zip_文件浏览_浏览Flash

    "文件浏览"部分暗示这可能是一个应用程序或工具,用于查看和管理本地计算机上的文件,特别是那些包含Flash内容的文件。而"_浏览Flash"部分进一步强调了该程序的核心特性,即支持查看Flash格式的媒体。 【描述分析】...

    Flash实现的在线对本地图片截图的工具

    7. 安全性:由于涉及本地文件访问,必须遵循Flash Player的安全策略,例如只能访问用户明确选择的文件,不能直接遍历或访问本地文件系统。 综上所述,这个项目涵盖了AS3的图形处理、文件操作、用户交互、网络通信等...

    Flash插件本地下载

    - 如果检测到用户浏览器中未安装Flash插件,则会通过JavaScript隐藏某些元素并显示提示信息,告诉用户如何下载和安装所需的Flash插件。 - 对于IE浏览器,会提示用户点击Logo以下载ActiveX控件;对于Firefox和Chrome...

Global site tag (gtag.js) - Google Analytics