FLASH多文件上传问题
时间:2011-09-27
来源:互联网
去网上找了个,但是有各种问题,本人主要做JS,不太懂AS,故请高手指点~
问题如下:
1.上传文件得不到正确的状态:
给FileReference注册事件addEventListener(ProgressEvent.PROGRESS, onProgress); 然后upload(new URLRequest(xxxxxx));
但是测试结果是这个触发不管文件有没有上传都会发生,本人认为这只是FLASH在读本地文件,而不是上传时发生的状态。
2.用了FileReferenceList.browse();可以选择多文件,然后循环去提交给PHP文件做处理,但是问题是上传文件总是少,比如选了4个可能只传了2个或3个,但是trace来看又的确是输出了4次,不知何故~
具体代码如下
AS3:
问题如下:
1.上传文件得不到正确的状态:
给FileReference注册事件addEventListener(ProgressEvent.PROGRESS, onProgress); 然后upload(new URLRequest(xxxxxx));
但是测试结果是这个触发不管文件有没有上传都会发生,本人认为这只是FLASH在读本地文件,而不是上传时发生的状态。
2.用了FileReferenceList.browse();可以选择多文件,然后循环去提交给PHP文件做处理,但是问题是上传文件总是少,比如选了4个可能只传了2个或3个,但是trace来看又的确是输出了4次,不知何故~
具体代码如下
AS3:
复制内容到剪贴板
upload_btn.graphics.lineStyle(2,25,0.7);
/*
upload_btn.graphics.moveTo(0,0);
upload_btn.graphics.lineTo(100,0);
upload_btn.graphics.lineTo(100,60);
upload_btn.graphics.lineTo(0,60);
upload_btn.graphics.lineTo(0,0);
*/
upload_btn.graphics.beginFill(30,0.6);
upload_btn.graphics.drawRect(100,100,200,100);
upload_btn.graphics.endFill();
var str:TextField = new TextField();
str.text = "点击上传";
this.addChild(upload_btn);
upload_btn.addChild(str);
upload_btn.addEventListener(MouseEvent.CLICK,upload);
var fr:FileReference = new FileReference();
var frList:FileReferenceList = new FileReferenceList();
function upload(e:MouseEvent):void
{
frList.browse();
frList.addEventListener(Event.SELECT,startUpload);
}
function onProgress(evt:ProgressEvent):void
{
var percentLoaded:Number = evt.bytesLoaded/evt.bytesTotal;
percentLoaded = Math.round(percentLoaded * 100);
trace("Loading: "+percentLoaded+"%");
}
function startUpload(e:Event):void
{
var list:Array = frList.fileList;
for(var i:Number = 0; i < list.length; i++) {
fr = list[i];
fr.addEventListener(ProgressEvent.PROGRESS, onProgress);
fr.addEventListener(DataEvent.UPLOAD_COMPLETE_DATA,upok);
fr.addEventListener(IOErrorEvent.IO_ERROR,ioerr);
fr.upload(new URLRequest("http://198.198.198.143/123/fileupload.php"));
trace(fr.name);
}
}
function upok(e:DataEvent):void
{
trace("upok"+e.data);
}
function ioerr(e:IOErrorEvent):void
{
trace("ioerr"+e.target);
}
PHP:
代码:
var upload_btn:Sprite = new Sprite();upload_btn.graphics.lineStyle(2,25,0.7);
/*
upload_btn.graphics.moveTo(0,0);
upload_btn.graphics.lineTo(100,0);
upload_btn.graphics.lineTo(100,60);
upload_btn.graphics.lineTo(0,60);
upload_btn.graphics.lineTo(0,0);
*/
upload_btn.graphics.beginFill(30,0.6);
upload_btn.graphics.drawRect(100,100,200,100);
upload_btn.graphics.endFill();
var str:TextField = new TextField();
str.text = "点击上传";
this.addChild(upload_btn);
upload_btn.addChild(str);
upload_btn.addEventListener(MouseEvent.CLICK,upload);
var fr:FileReference = new FileReference();
var frList:FileReferenceList = new FileReferenceList();
function upload(e:MouseEvent):void
{
frList.browse();
frList.addEventListener(Event.SELECT,startUpload);
}
function onProgress(evt:ProgressEvent):void
{
var percentLoaded:Number = evt.bytesLoaded/evt.bytesTotal;
percentLoaded = Math.round(percentLoaded * 100);
trace("Loading: "+percentLoaded+"%");
}
function startUpload(e:Event):void
{
var list:Array = frList.fileList;
for(var i:Number = 0; i < list.length; i++) {
fr = list[i];
fr.addEventListener(ProgressEvent.PROGRESS, onProgress);
fr.addEventListener(DataEvent.UPLOAD_COMPLETE_DATA,upok);
fr.addEventListener(IOErrorEvent.IO_ERROR,ioerr);
fr.upload(new URLRequest("http://198.198.198.143/123/fileupload.php"));
trace(fr.name);
}
}
function upok(e:DataEvent):void
{
trace("upok"+e.data);
}
function ioerr(e:IOErrorEvent):void
{
trace("ioerr"+e.target);
}
复制内容到剪贴板
<?php
function getExt($filename)
{
$arr = pathinfo($filename);
return $arr["extension"];
}
$flag = 0;
if(isset($_FILES["Filedata"]))
{
$flag = move_uploaded_file($_FILES["Filedata"]["tmp_name"],"./upload/".date(YmdHms).".".getExt($_FILES["Filedata"]["name"]));
if($flag)
{
echo "上传成功";
}
else
{
echo "上传失败";
}
}
?>
代码:
<meta name="content-type" content="text/html;charset=utf-8"><?php
function getExt($filename)
{
$arr = pathinfo($filename);
return $arr["extension"];
}
$flag = 0;
if(isset($_FILES["Filedata"]))
{
$flag = move_uploaded_file($_FILES["Filedata"]["tmp_name"],"./upload/".date(YmdHms).".".getExt($_FILES["Filedata"]["name"]));
if($flag)
{
echo "上传成功";
}
else
{
echo "上传失败";
}
}
?>
作者: ft284800 发布时间: 2011-09-27
1 ProgressEvent.PROGRESS没上传时不会触发。
2 不建议在for循环中同时上传N个,推荐依次上传,即一个上传完成,再上传下一个。
2 不建议在for循环中同时上传N个,推荐依次上传,即一个上传完成,再上传下一个。
作者: flash023 发布时间: 2011-09-27
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28