用flash实现上传进度

注:阅读本文需要对js,flash,php有一定基础。

 

html里面,上传我们需要弄一个<input type="file" name="a"/>这样的东西来上传,点击按钮就弹出上传对话框,flash里面我们需要 调用FileReference对象的一个实例来实现弹窗。

var o  = new FileReference();

o.browse();//这步会弹出窗口

这是一个主动触发的过程,就像js一样,我们需要放在一个比如按钮的点击事件里调用该方法,类似下面:

on...=function(){o.browse();}

 

选中文件以后,用下面的代码进行上传:

var req:URLRequest = new URLRequest("/get.php");//提交到你的处理页面
 o.upload(req,"upimg");//upimg是为你的上传文件取个名字,这样get.php处理的时候才知道获取是什么名,好比(<input type="file" name="upimg"/>)

 

这样我们就成功把文件提交到get.php了,跟表单提交效果一样。

 

下面开始我们的主题,要实现上传进度,要先了解下FileReference的几个事件:

onselect//选中文件的时候触发

onopen//开始上传文件的时候触发

onprocess//上传过程中触发,会随着上传内容增加,多次触发,在此事件里我们可以获取到总字节数和已经上传的字节数

oncomplete//上传完毕后触发

 

监听事件的方法:

function func(e){

    //处理函数

o.addEventListener(event,func);

这样就实现了对某个事件的监听

 

用这些事件,我们很容易就能知道该上传的各个状态,百分比,但这些flash代码,我们是需要在页面里面实现动态上传进度,最好能在这些处理事件里面调用js函数,由js函数来控制html来显示装置进度。

很幸运,flash提供了这样的方法:

ExternalInterface.call(js函数名字,参数....);//这样就等于调用了html页面里的 js函数名(参数...)

 

这样我们就可以间接的用js实时显示上传进度了.

 //swf.prototype.onprocess会在上传过程中不停的被调用

 

下面贴出代码

flash代码放在第一帧即可

 

 

get.php 注意,我的文件格式是utf-8

 

 

另外flash向服务器(get.php)提交上传文件的时候,会自动把flash所在页面cookie信息带上,这样我们在get.php里面就不会有用户认证的问题,照样可以识别session,cookie

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值