`

关于Flash Player 10的上传文件机制研究

    博客分类:
  • AS3
阅读更多

2009年06月20日 | 作者:Fonny

 

这些天在做我的网络相册,播放方面很容易,本来打算用Flash结合纯代码组件做,但是自己的Flash这边功力不是很够,用代码绘图和Flash设计也不是很熟悉,费了不少周折,最后还是用Flex框架搞定.

很简单,用List做的缩略图Bar,用SWFLoader加载大图.

SWFLoader相当方便,甚至连加载进度的百分比都用属性准备好了.

 

既然是相册,必然需要上传图片.

Flash Player 10(下文称做:FP)的FileReferenceList (下文称做:FRList)和FileReference(下文称做:FR)FileReferenceListFileReferenceList类增加了load()和save()方法,同时用只读的data属

性(DataArray类型)保存本地和待上传的文件实际内容.

如果要显示本地文件,或者预览待上传的文件,可以用Loader类的loadByteArray()方法读取FR的data内容.

值得注意的几个要点:

1,FR一次只能上传或下载一个文件,

FRList可以用Browse()方法让用户选择多个文件,并保存在fileList属性(Array类型)中,fileList的数据都是FR.也就是说,可以一次选择多个文件,然后遍历这个fileList,一个一个顺序上传或下载,然后就应该清空FR的内容,因为它只能做一次.

2,关于Browse()方法,

只能通过用户操作类的事件才能打开windows对话框,而使用代码方式调用这个方法会报错.

3,Browse()方法可以多次调用,但是必须是在FR上传或下载动作之前.

多次调用的结果是只保存最后一次Browse()选择的文件,而不是累加.

4,必须用FP 10.0以上的编译版本.

FR的load(),save()方法和data属性从FP10开始支持,之前的版本无法使用这些方法和属性.

5,必须借用第三方语言实现服务器保存的服务.

本人使用且仅能使用PHP脚本,可以实现单个文件的上传,更改文件名为Flex端指定名称,建立并将文件保存到指定目录(多层),将实际保存文件的目录和文件名保存到指定数据库,并返回任意信息通知Flex端工厂化处理.

6,及时移除前台的complete事件的监听.

如果使用MVC框架,注意单例类保存FR的引用时的Event事件触发问题.本人使用Cairngorm框架,如果不及时移除监听,会造成前台预览本地文件的load()方法的complete事件在upload()方法的complete事件时再次触发前台的处理函数.

7,如果要接收服务器脚本返回的数据,应该监听upload_complete_data事件,并读取event的data属性.

FR的upload_complete_data事件只能返回PHP的echo打印的数据,而不是return.

在PHP脚本中,return只能用来终止脚本,类似于AS3中的return无参功能.

8,如果要用FR的upload传递本地数据到服务器脚本,只能通过URLRequest的data属性,而这个data属性只接受String类型和URLVariable类型(动态类)的数据,同时,URLVariable类的自定义属性只能接受”名称:值”类型的数据,比如:

 

var URLVars : URLVariable = new URLVariable();

var URLReq:URLRequest = new URLRequest();

URLVars.myName = “Fonny”;

URLRequest.data = URLVars;

…

 

9,URLRequest需要设置的属性:

首先,应该设置URLRequest.method属性,该属性接受URLRequestMethod类定义的常量POST和GET.关于POST和GET的区别请查阅HTML相关资料.

然后,将URLRequest的url属性指定为uploader脚本相对于Application的相对位置的String,如:

如果PHP脚本在Application的本目录,可以直接指定为:”uploader.php”;

如果在子目录PHPscript中,则为:”PHPscript/uploader.php”或”./PHPscript/uploader.php”;

uploader请求,类似于HTTPService,具体区别或者说他们根本就是一个东西,我还没有证实,但是根据Adobe官方文档,并没有说他们是同一种服务,而是分开讲解的,所以我暂且认为他们有所不同.

10,(09-06-21)今天证实,FR的load()和upLoad()方法都会触发complete事件,而且互相独立,即使是upload之前调用过load把本地文件加载到内存中,之后调用upload()的时候还是会重新触发一次complete事件.所以还是那句话,及时移除FR各个阶段的监听,特别是多图上传的时候.

分享到:
评论

相关推荐

    Flash批量文件上传(修正版)

    本话题聚焦于"Flash批量文件上传(修正版)",这意味着我们将探讨一个利用Adobe Flash技术实现的批量文件上传解决方案,并且这个版本已经修复了之前的错误,提高了文件上传的数量限制。 Flash作为一种广泛使用的...

    Flash 文件上传组件

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

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

    在`upload.asp`文件中,可能包含了处理文件上传逻辑的代码,如接收来自Flash客户端的文件数据,将其保存到服务器的特定位置,并可能包含错误处理和验证机制。 2. **Flash (AS2.0)**:AS2.0是ActionScript 2.0的简称...

    FLASH大文件上传组件

    Flash大文件上传组件的核心原理是利用Flash的ActionScript语言,通过Flash Player与服务器通信。它通常会使用XMLSocket或HTTPSocket等API来建立持久连接,实现文件的分块传输。同时,Flash的本地文件访问权限使得它...

    swfupload控件实现flash文件上传

    1. **兼容Flash Player 10安全限制**:解决了因Flash Player 10更严格的安全机制导致的问题。 2. **POST数据**:在上传文件时可以发送额外的POST数据。 3. **文件特定数据**:针对每个文件上传可以发送POST/GET...

    FLASH 上传大文件带进度条

    该代码示例展示了如何利用FLASH的`FileReference`对象进行文件上传,并结合事件监听机制实现实时进度反馈。这对于需要处理大量文件上传任务的应用场景非常有用,如图片上传、视频上传等,能够显著提升用户体验。 ...

    flash 上传

    10. **适应性**:考虑到现代浏览器对Flash的支持逐渐减少,开发者在设计文件上传功能时应考虑兼容性和未来性,可以采用渐进增强或优雅降级的策略,即优先使用HTML5的File API,如果用户浏览器不支持,则退回到使用...

    带进度条【flash】的文件上传Demo

    Flash Player可以在大多数浏览器中运行,使得跨平台的文件上传成为可能。 2. **上传地址参数**: - `maxsize`:这是用来设置单个文件的最大体积。这个参数允许开发者限制用户上传的文件大小,防止过大文件导致...

    Flash效果文件上传源码 v1.0_flsshupload.zip

    2. **文件上传机制**:Flash的文件上传功能利用了Flash Player的本地文件访问权限,通过ActionScript(Flash的编程语言)编写逻辑来处理文件选择、预览和上传过程。它可能包含一个定制的文件选择对话框,允许用户...

    ASP.NET利用FLASH批量上传图片

    在ASP.NET中实现Flash批量上传图片的功能,主要是结合了Flash的技术来处理大文件和多文件的上传需求,因为Flash在处理大文件上传时能够分块上传,避免了一次性加载整个文件对服务器造成的压力。以下是关于这个主题的...

    asp.net 与flash 的多文件上传资料

    6. 多文件上传的错误处理和验证机制 通过深入学习这些内容,开发者可以掌握在早期Web环境中实现多文件上传的技巧,尽管现代Web开发更多地依赖HTML5的File API和Web APIs,但这些基础知识对于理解Web上传原理仍然很...

    kindeditor-4.1.11多图上传按钮无法出现且无法点击flash无法上传

    在它的4.1.11版本中,存在一个与Flash相关的问题,即多图上传按钮无法显示且无法通过Flash进行文件上传。由于Adobe公司在2020年底已经停止对Flash Player的支持,这个问题对于依赖Flash的KindEditor来说,确实是一个...

    Flex 向 java服务器 上传文件

    这个类是Flash Player API的一部分,允许用户从本地文件系统选择文件并进行读取、写入或上传操作。在Flex应用中,当用户点击一个按钮或其他UI元素时,我们可以调用FileReference的browse()方法来打开一个文件选择...

    SCFlashMp3Player.rar flash 网页调用页面

    【SCFlashMp3Player.rar】是一个包含Flash MP3播放器的压缩包,主要用于网页中播放音频文件。这个压缩包中的核心组件是名为"SC Flash Mp3 Player v2.5 Beta"的文件,它是一个功能丰富的Flash音乐播放解决方案,适用...

    flashupload 实现文件的批量上传

    同时,由于FlashPlayer的广泛安装率,使得这种美观的界面可以在大多数用户设备上得到一致的展示。 再者,“修改简单”意味着FlashUpload的灵活性。开发者可以根据需求调整上传界面的布局、颜色、字体等,甚至可以...

    asp.net上传文件预览Excel\Word\PDF文件

    为了提供良好的用户体验,可以添加进度条显示文件上传和转换进度,以及错误处理机制,当转换失败时向用户反馈。 总结,ASP.NET中实现文件预览的这个流程涉及到文件上传、多种格式间的转换以及预览展示,每个环节都...

    FLASH+.net上传原代码

    10. **多文件上传**:Flash支持多文件选择,因此原代码可能包含处理多个文件上传的逻辑。 通过这个"FLASH+.net上传原代码",开发者可以学习到如何创建一个完整的文件上传解决方案,结合了Flash的前端交互性和.NET的...

    SWFUpload批量文件上传教程

    - **Flash Button的使用**: 由于Flash Player 10的安全限制,SWFUpload在Flash影片中内置了一个可定制的按钮,用户通过点击这个按钮来触发文件上传对话框。 #### 四、SWFUpload V2的新特性 SWFUpload V2版本引入了...

    flash视频网站核心源代码flvht

    它以Flash Player为播放基础,通过ASP(Active Server Pages)脚本语言进行服务器端的处理和控制,实现了对FLV视频文件的上传、管理和播放等功能。ASP是一种广泛应用于Windows服务器上的动态网页开发技术,允许...

Global site tag (gtag.js) - Google Analytics