好吧,我承认我又2B了,用FileReferenceList读取本地多个文件,遍历FileReferenceList.fileList之后,对每个FileReference对象注册了Event.COMPLETE事件,然后执行FileReference.load()方法,在不使用FileReference的情况下是正常的,使用FireReference.upload方法也是正常的。变量也是全局的,囧了。
贴代码,再测测,如果的确是Bug,提交给Adobe去了:
public var importFileList:FileReferenceList = new FileReferenceList();
public var currentFileReference:FileReference = new FileReference();
protected function btnImport_clickHandler(event:MouseEvent):void
{
var imgFilter:FileFilter = new FileFilter("Image Files (png,jpg,gif)","*.png;*.jpg;*.gif;*.jpeg;");
importFileList.addEventListener(Event.SELECT,fileSelectHandler);
importFileList.browse([imgFilter]);
}
private var fileItrIdx:int = 0;
private var fileList:Array;
public function fileSelectHandler(event:Event):void
{
fileList = importFileList.fileList;
fileItrIdx = 0;
itrFile(fileList,fileItrIdx);
}
public function itrFile(fileList:Array,idx:int):void
{
if(idx<importFileList.fileList.length)
{
//importFileList.fileList[idx].addEventListener(Event.COMPLETE,localFileLoadComplete);
//importFileList.fileList[idx].load();
//trace(importFileList.fileList[idx].data);
//以上的代码愣是执行不成功,以下的正常
(importFileList.fileList[idx] as FileReference).addEventListener(DataEvent.UPLOAD_COMPLETE_DATA,uploadHandler);
(importFileList.fileList[idx] as FileReference).upload(new URLRequest("uploadimg.php"),"img");
}
}
private function uploadHandler(devent:DataEvent):void
{
trace("!!!!!!!!!!!!");
itrFile(fileList,++fileItrIdx);
}
public function localFileLoadComplete(event:Event):void
{
trace("!!!!!!!!!!!!"+event.currentTarget.data.length);
itrFile(fileList,++fileItrIdx);
}在air下有替代的方法:使用File




