Пакетflash.net
Классpublic class FileReferenceList
НаследованиеFileReferenceList Inheritance EventDispatcher Inheritance Object

Язык версии : ActionScript 3.0
Версии среды выполнения: AIR 1.0, Flash Player 9

Класс FileReferenceList обеспечивает работу средств, позволяющих пользователю выбрать один или несколько файлов для отправки. Объект FileReferenceList представляет группу из одного или нескольких локальных файлов на диске пользователя в форме массива объектов FileReference. Подробную информацию и важные аспекты работы с объектами FileReference и классом FileReference см. в описании класса FileReference.

Для работы с классом FileReferenceList необходимо:

Для работы с несколькими файлами класс FileReferenceList снабжен методом browse() и свойством fileList. На автономных и внешних проигрывателях для ОС Linux и Mac OS X 10.1 (и более ранних версий) в процессе выполнения вызова FileReferenceList.browse() воспроизведение SWF-файла временно останавливается.

Посмотреть примеры

См. также

FileReference


Общедоступные свойства
 СвойствоОпределено
 Inheritedconstructor : Object
Ссылка на объект класса или функцию конструктора для данного экземпляра объекта.
Object
  fileList : Array
[только для чтения] Массив объектов FileReference.
FileReferenceList
 Inheritedprototype : Object
[статические] Ссылка на модель объекта класса или функции.
Object
Общедоступные методы
 МетодОпределено
  
Создает новый объект FileReferenceList.
FileReferenceList
 Inherited
addEventListener(type:String, listener:Function, useCapture:Boolean = false, priority:int = 0, useWeakReference:Boolean = false):void
Регистрирует объект прослушивателя события в объекте EventDispatcher, в результате чего прослушиватель будет получать уведомления о событиях.
EventDispatcher
  
browse(typeFilter:Array = null):Boolean
Отображает диалоговое окно выбора файлов, позволяющее пользователю выбрать один или несколько локальных файлов для отправки.
FileReferenceList
 Inherited
Передает событие в поток событий.
EventDispatcher
 Inherited
Проверяет наличие у объекта EventDispatcher прослушивателей событий, которые зарегистрированы для получения уведомлений о событиях определенного типа.
EventDispatcher
 Inherited
Показывает, определено ли заданное свойство для объекта.
Object
 Inherited
Показывает, есть ли экземпляр класса Object в цепи прототипов объекта, заданного в качестве параметра.
Object
 Inherited
Показывает наличие заданного свойства и его перечисляемость.
Object
 Inherited
removeEventListener(type:String, listener:Function, useCapture:Boolean = false):void
Удаляет прослушиватель из объекта EventDispatcher.
EventDispatcher
 Inherited
Задает доступность динамического свойства для операций цикла.
Object
 Inherited
Возвращает строковое представление заданного объекта.
Object
 Inherited
Возвращает элементарное значение заданного объекта.
Object
 Inherited
Проверяет, зарегистрирован ли прослушиватель событий в объекте EventDispatcher или в любом из его предков для получения уведомлений о событиях определенного типа.
EventDispatcher
События
 Событие Сводка Определено
 Inherited[многоадресное событие] Отправляется, когда проигрыватель Flash Player перемещается в фокус операционной системы и становится активным.EventDispatcher
  Отправляется, когда пользователь закрывает диалоговое окно обозревателя файлов.FileReferenceList
 Inherited[многоадресное событие] Отправляется, когда проигрыватель Flash Player покидает фокус операционной системы и становится неактивным.EventDispatcher
  Отправляется, когда пользователь выбирает один или несколько файлов для отправки в диалоговом окне обозревателя файлов.FileReferenceList
Сведения о свойстве
fileListсвойство
fileList:Array  [только для чтения]

Язык версии : ActionScript 3.0
Версии среды выполнения: AIR 1.0, Flash Player 9

Массив объектов FileReference.

Когда вызывается метод FileReferenceList.browse() и пользователь выбирает один или несколько файлов в диалоговом окне, которое открывает метод browse(), данное свойство заполняется массивом объектов FileReference, каждый из которых представляет выбранный пользователем файл. В дальнейшем можно использовать данный массив для отправки каждого файла с помощью метода FileReference.upload(). За раз следует передавать по одному файлу.

Свойство fileList заполняется заново при каждом вызове метода browse() в отношении данного объекта FileReferenceList.

Свойства объектов FileReference описаны в документации по классу FileReference.


Реализация
    public function get fileList():Array

См. также

Сведения о конструкторе
FileReferenceList()Конструктор
public function FileReferenceList()

Язык версии : ActionScript 3.0
Версии среды выполнения: AIR 1.0, Flash Player 9

Создает новый объект FileReferenceList. До тех пор пока вы не вызовете в отношении объекта FileReferenceList метод browse() и пользователь не выберет один или несколько файлов, данный объект остается пустым. При вызове метода browse() в отношении объекта FileReference свойство fileList данного объекта заполняется массивом объектов FileReference.

См. также

Сведения о методе
browse()метод
public function browse(typeFilter:Array = null):Boolean

Язык версии : ActionScript 3.0
Версии среды выполнения: AIR 1.0, Flash Player 9

Отображает диалоговое окно выбора файлов, позволяющее пользователю выбрать один или несколько локальных файлов для отправки. Это диалоговое окно принадлежит операционной системе пользователя. Когда вы вызываете этот метод и пользователь успешно выбирает файлы, свойство fileList данного объекта FileReferenceList заполняется массивом объектов FileReference (по одному для каждого выбранного пользователем файла). При каждом последующем вызове метода FileReferenceList.browse() свойство FileReferenceList.fileList указывает файлы, которые пользователь выбрал в диалоговом окне.

С помощью параметра typeFilterможно определить, какие файлы будут отображаться в диалоговом окне.

Единовременно в отношении объекта FileReferenceList может быть запущен только один сеанс FileReference.browse(), FileReference.download() или FileReferenceList.browse() (за раз может быть открыто только одно диалоговое окно).

Параметры

typeFilter:Array (default = null) — Массив экземпляров FileFilter, который используется для фильтрации файлов, отображенных в диалоговом окне. Если данный параметр пропущен, то отображаются все файлы. Дополнительную информацию см. в описании класса FileFilter.

Возвращает
Boolean — Возвращает значение true при наличии допустимых параметров и открытии диалогового окна просмотра файлов.

События
select:Event — Вызывается, когда пользователь успешно выбирает в диалоговом окне элемент для отправки.
 
cancel:Event — Вызывается, когда пользователь прекращает работу с диалоговым окном путем его закрытия или нажатия на кнопку "Отмена".

Выдает
IllegalOperationError — Создается в следующих ситуациях: 1) В текущий момент запущен другой сеанс просмотра FileReference или FileReferenceList (единовременно может быть запущен только один сеанс просмотра файлов). 2) Параметр в файле пользователя mms.cfg запрещает данную операцию.
 
ArgumentError — Если массив typeFilter не содержит правильно сформатированные объекты FileFilter, создается исключение. Подробные сведения о правильном форматировании фильтров см. в документации по FileFilter.

См. также

Сведения о событии
cancel Событие
Тип объекта события: flash.events.Event
свойство Event.type = flash.events.Event.CANCEL

Язык версии : ActionScript 3.0
Версии среды выполнения: AIR 1.0, Flash Player 9

Отправляется, когда пользователь закрывает диалоговое окно обозревателя файлов. (Это диалоговое окно открывается при вызове метода FileReferenceList.browse(), FileReference.browse() илиFileReference.download().)

Константа Event.CANCEL определяет значение свойства type объекта события cancel.

Данное событие имеет следующие свойства.

СвойствоЗначение
bubblesfalse
cancelablefalse; нет поведения по умолчанию для отмены.
currentTargetОбъект, активно обрабатывающий объект Event с помощью прослушивателя событий.
targetСсылка на объект, для которого отменена операция.

См. также

select Событие  
Тип объекта события: flash.events.Event
свойство Event.type = flash.events.Event.SELECT

Язык версии : ActionScript 3.0
Версии среды выполнения: AIR 1.0, Flash Player 9

Отправляется, когда пользователь выбирает один или несколько файлов для отправки в диалоговом окне обозревателя файлов. (Это диалоговое окно открывается при вызове метода FileReferenceList.browse(), FileReference.browse() илиFileReference.download().) Когда пользователь выбирает файл и подтверждает эту операцию (например, путем нажатия на кнопку "Сохранить"), объект FileReferenceList заполняется объектами FileReference, представляющими выбранные пользователем файлы.

Константа Event.SELECT определяет значение свойства type объекта события select.

Данное событие имеет следующие свойства.

СвойствоЗначение
bubblesfalse
cancelablefalse; нет поведения по умолчанию для отмены.
currentTargetОбъект, активно обрабатывающий объект Event с помощью прослушивателя событий.
targetОбъект, в котором выделен элемент.

См. также

Примеры Как пользоваться примерами
FileReferenceListExample.as

В следующем примере показано, как можно использовать события для управления отправкой нескольких файлов. Класс CustomFileReferenceList расширяет FileReferenceList и включает в себя событие complete, которое отправляется при отправке каждого отдельного файла в объекте FileReferenceList. Событие LIST_COMPLETE в классе FileReferenceListExample отправляется, когда будут загружены все файлы в объекте FileReferenceList.

Чтобы запустить данный пример, разместите сценарий, предназначенный для принятия отправки файла, по адресу http://www.[yourDomain].com/yourUploadHandlerScript.cfm. Чтобы обеспечить сетевой доступ к указанному файлу, в зависимости от того, где расположен ваш SWF-файл и куда вы передаете файлы, может также потребоваться скомпилировать SWF-файл, определив для параметра "Безопасность локального воспроизведения" значение "Доступ только к сети", или обновить параметры безопасности проигрывателя Flash® Player. Если для отправки используется удаленный сервер и данный пример запускается с настольного компьютера, на вашем сервере должен присутствовать файл crossdomain.xml.


package {
    import flash.display.Sprite;
    import flash.events.*;
    import flash.net.FileReference;
    import flash.net.FileReferenceList;
 
    public class FileReferenceListExample extends Sprite {
        public static var LIST_COMPLETE:String = "listComplete";
        public function FileReferenceListExample() {
            initiateFileUpload();
        }

        private function initiateFileUpload():void {
            var fileRef:CustomFileReferenceList = new CustomFileReferenceList();
            fileRef.addEventListener(FileReferenceListExample.LIST_COMPLETE, listCompleteHandler);
            fileRef.browse(fileRef.getTypes());
        }

        private function listCompleteHandler(event:Event):void {
            trace("listCompleteHandler");
        }
    }
}
 
import flash.events.*;
import flash.net.FileReference;
import flash.net.FileReferenceList;
import flash.net.FileFilter;
import flash.net.URLRequest;
 
class CustomFileReferenceList extends FileReferenceList {
    private var uploadURL:URLRequest;
    private var pendingFiles:Array;

    public function CustomFileReferenceList() {
        uploadURL = new URLRequest();
        uploadURL.url = "http://www.[yourDomain].com/yourUploadHandlerScript.cfm";
        initializeListListeners();
    }

    private function initializeListListeners():void {
        addEventListener(Event.SELECT, selectHandler);
        addEventListener(Event.CANCEL, cancelHandler);
    }

    public function getTypes():Array {
        var allTypes:Array = new Array();
        allTypes.push(getImageTypeFilter());
        allTypes.push(getTextTypeFilter());
        return allTypes;
    }
 
    private function getImageTypeFilter():FileFilter {
        return new FileFilter("Images (*.jpg, *.jpeg, *.gif, *.png)", "*.jpg;*.jpeg;*.gif;*.png");
    }
 
    private function getTextTypeFilter():FileFilter {
        return new FileFilter("Text Files (*.txt, *.rtf)", "*.txt;*.rtf");
    }
 
    private function doOnComplete():void {
        var event:Event = new Event(FileReferenceListExample.LIST_COMPLETE);
        dispatchEvent(event);
    }
 
    private function addPendingFile(file:FileReference):void {
        trace("addPendingFile: name=" + file.name);
        pendingFiles.push(file);
        file.addEventListener(Event.OPEN, openHandler);
        file.addEventListener(Event.COMPLETE, completeHandler);
        file.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler);
        file.addEventListener(ProgressEvent.PROGRESS, progressHandler);
        file.addEventListener(SecurityErrorEvent.SECURITY_ERROR, securityErrorHandler);
        file.upload(uploadURL);
    }
 
    private function removePendingFile(file:FileReference):void {
        for (var i:uint; i < pendingFiles.length; i++) {
            if (pendingFiles[i].name == file.name) {
                pendingFiles.splice(i, 1);
                if (pendingFiles.length == 0) {
                    doOnComplete();
                }
                return;
            }
        }
    }
 
    private function selectHandler(event:Event):void {
        trace("selectHandler: " + fileList.length + " files");
        pendingFiles = new Array();
        var file:FileReference;
        for (var i:uint = 0; i < fileList.length; i++) {
            file = FileReference(fileList[i]);
            addPendingFile(file);
        }
    }
 
    private function cancelHandler(event:Event):void {
        var file:FileReference = FileReference(event.target);
        trace("cancelHandler: name=" + file.name);
    }
 
    private function openHandler(event:Event):void {
        var file:FileReference = FileReference(event.target);
        trace("openHandler: name=" + file.name);
    }
 
    private function progressHandler(event:ProgressEvent):void {
        var file:FileReference = FileReference(event.target);
        trace("progressHandler: name=" + file.name + " bytesLoaded=" + event.bytesLoaded + " bytesTotal=" + event.bytesTotal);
    }
 
    private function completeHandler(event:Event):void {
        var file:FileReference = FileReference(event.target);
        trace("completeHandler: name=" + file.name);
        removePendingFile(file);
    }
 
    private function httpErrorHandler(event:Event):void {
        var file:FileReference = FileReference(event.target);
        trace("httpErrorHandler: name=" + file.name);
    }
 
    private function ioErrorHandler(event:Event):void {
        var file:FileReference = FileReference(event.target);
        trace("ioErrorHandler: name=" + file.name);
    }
 
    private function securityErrorHandler(event:Event):void {
        var file:FileReference = FileReference(event.target);
        trace("securityErrorHandler: name=" + file.name + " event=" + event.toString());
    }
}