Apache flex 刚通过FileReference加载的文件的文件名不可用
要将3个文件本地加载到Flash Player中,可以在用户选择文件后使用类似的方法管理序列Apache flex 刚通过FileReference加载的文件的文件名不可用,apache-flex,Apache Flex,要将3个文件本地加载到Flash Player中,可以在用户选择文件后使用类似的方法管理序列 private function uploadList(evt:Event):void{ var arr:Array = fileReferenceList.fileList; for each(var item:FileReference in arr){ item.addEventListener(Event.COMPLETE, o
private function uploadList(evt:Event):void{
var arr:Array = fileReferenceList.fileList;
for each(var item:FileReference in arr){
item.addEventListener(Event.COMPLETE, onFileLoadComplete);
item.load();
}
}
//第2步-继续加载文件并等待第3步…在本用例中将调用三次
private function onFileLoadComplete(e:Event):void {
var loader:Loader = new Loader();
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, onDataLoadComplete);
loader.loadBytes(FileReference(e.target).data);
}
//步骤3-Flash Player已加载文件并准备好处理。。。
//此示例是一个正在填充到BitmapData对象中的图像
private function onDataLoadComplete(e:Event):void {
var bitmapData:BitmapData = Bitmap(e.target.content).bitmapData;
var loader:Loader = Loader(e.target.loader);
}
//步骤4-通过步骤3的每个文件的文件名和文件字节大小在哪里
我无法在现有对象中定位此数据
我自己的决心
我把这些信息塞进一个简单的字典,以后再检索
也许还有其他解决办法
private function onFileLoadComplete(e:Event):void {
if(FileReference(e.target).data.length == 0){
return;
}
var loader:Loader = new Loader();
filenameDict[loader] = String(FileReference(e.target).name);
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, onDataLoadComplete);
loader.loadBytes(FileReference(e.target).data);
}
private function onDataLoadComplete(e:Event):void {
var bitmapData:BitmapData = Bitmap(e.target.content).bitmapData;
var loader:Loader = Loader(e.target.loader);
var file:String = filenameDict[loader];
delete filenameDict[loader];
您可以使用数组,但从代码中可以看出,字典是更简单的方法
var files:Array = [];
var loaders:Array = [];
private function onFileLoadComplete(e:Event):void
{
var loader:Loader = new Loader();
files.push(e.target);
loaders.push(loader);
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, onDataLoadComplete);
loader.loadBytes(FileReference(e.target).data);
}
private function onDataLoadComplete(e:Event):void
{
var bitmapData:BitmapData = Bitmap(e.target.content).bitmapData;
var loader:Loader = Loader(e.target.loader);
var index:Number = loaders.indexOf(loader);
var file:String = FileReference(files[index]).name;
/*
* Clear the arrays to get rid of unwanted references that might
* prevent them from being garbage collected.
* */
files.splice(index);
loaders.splice(index);
}
当我发布这篇文章的第一个版本时,我没有注意到FP10的文件引用