Чтобы загрузить 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, 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];