パッケージflash.net
public class FileReferenceList
継承FileReferenceList Inheritance EventDispatcher Inheritance Object

FileReferenceList クラスには、ユーザーがアップロードするファイルを選択する手段 (複数選択可能) があります。FileReferenceList オブジェクトは、ユーザーのディスク上にあるローカルファイルを FileReference オブジェクトの配列として表現します。FileReference オブジェクトと FileReference クラスの詳細および重要な考慮事項については、「FileReference クラス」を参照してください。これらは FileReferenceList で使用します。

FileReferenceList クラスを使用するには

FileReferenceList クラスには、browse() メソッドや、複数のファイルを使用するための fileList プロパティなどがあります。

例の表示

関連項目

FileReference


パブリックプロパティ
 プロパティ定義
 Inheritedconstructor : Object
特定のオブジェクトインスタンスのクラスオブジェクトまたはコンストラクタ関数への参照です。
Object
  fileList : Array
[read-only] FileReference オブジェクトの配列です。
FileReferenceList
 Inheritedprototype : Object
[static] クラスまたは関数オブジェクトのプロトタイプオブジェクトへの参照です。
Object
パブリックメソッド
 メソッド定義
  FileReferenceList()
新しい FileReferenceList オブジェクトを作成します。
FileReferenceList
 InheritedaddEventListener(type:String, listener:Function, useCapture:Boolean = false, priority:int = 0, useWeakReference:Boolean = false):void
イベントリスナーオブジェクトを EventDispatcher オブジェクトに登録し、リスナーがイベントの通知を受け取るようにします。
EventDispatcher
  browse(typeFilter:Array = null):Boolean
アップロードするローカルファイルを 1 つ以上選択できるファイル参照ダイアログボックスを表示します。
FileReferenceList
 InheriteddispatchEvent(event:Event):Boolean
イベントをイベントフローに送出します。
EventDispatcher
 InheritedhasEventListener(type:String):Boolean
EventDispatcher オブジェクトに、特定のイベントタイプに対して登録されたリスナーがあるかどうかを確認します。
EventDispatcher
 InheritedhasOwnProperty(name:String):Boolean
オブジェクトに指定されたプロパティが定義されているかどうかを示します。
Object
 InheritedisPrototypeOf(theClass:Object):Boolean
Object クラスのインスタンスが、パラメータとして指定されたオブジェクトのプロトタイプチェーン内にあるかどうかを示します。
Object
 InheritedpropertyIsEnumerable(name:String):Boolean
指定されたプロパティが存在し、列挙可能かどうかを示します。
Object
 InheritedremoveEventListener(type:String, listener:Function, useCapture:Boolean = false):void
EventDispatcher オブジェクトからリスナーを削除します。
EventDispatcher
 InheritedsetPropertyIsEnumerable(name:String, isEnum:Boolean = true):void
ループ処理に対するダイナミックプロパティの可用性を設定します。
Object
 InheritedtoString():String
指定されたオブジェクトのストリング表現を返します。
Object
 InheritedvalueOf():Object
指定されたオブジェクトのプリミティブ値を返します。
Object
 InheritedwillTrigger(type:String):Boolean
指定されたイベントタイプについて、この EventDispatcher オブジェクトまたはその祖先にイベントリスナーが登録されているかどうかを確認します。
EventDispatcher
イベント
 イベント一覧定義
  cancel ユーザーがファイル参照ダイアログボックスを閉じると、送出されますFileReferenceList
  select ユーザーがアップロードするファイルをファイル参照ダイアログボックスから 1 つ以上選択したときに送出されます。FileReferenceList
プロパティの詳細
fileListプロパティ
fileList:Array  [read-only]

FileReference オブジェクトの配列です。

FileReferenceList.browse() メソッドが呼び出され、ユーザーが browse() メソッドによって開いたダイアログボックスからファイルを選択すると、このプロパティに FileReference オブジェクトの配列が設定されます。このオブジェクトは、ユーザーが選択したファイルを表します。その後、この配列を使用して、FileReference.upload() メソッドで各ファイルをアップロードできます。一度に 1 つのファイルをアップロードする必要があります。

fileList プロパティは、browse() が FileReferenceList オブジェクトで呼び出されるたびに新しく設定されます。

FileReference オブジェクトのプロパティについての説明は、FileReference クラスの説明にあります。

実装
    public function get fileList():Array

関連項目

コンストラクタの詳細
FileReferenceList()コンストラクタ
public 関数 FileReferenceList()

新しい FileReferenceList オブジェクトを作成します。FileReferenceList オブジェクトで browse() メソッドを呼び出し、ユーザーが 1 つまたは複数のファイルを選択するまでは、FileReferenceList オブジェクトには何も含まれません。FileReference オブジェクトで browse() を呼び出すと、このオブジェクトの fileList プロパティに FileReference オブジェクトの配列が設定されます。

関連項目

メソッドの詳細
browse()メソッド
public function browse(typeFilter:Array = null):Boolean

アップロードするローカルファイルを 1 つ以上選択できるファイル参照ダイアログボックスを表示します。このダイアログボックスは、オペレーティングシステムのネイティブのダイアログボックスです。このメソッドを呼び出して、ユーザーが正常にファイルを選択すると、この FileReferenceList オブジェクトの fileList プロパティに FileReference オブジェクトの配列が設定されます。FileReference オブジェクトはユーザーが選択したファイルごとに作成されます。これ以降 FileReferenceList.browse() メソッドが呼び出されるたびに、FileReferenceList.fileList プロパティは、ダイアログボックスでユーザーが選択したファイルにリセットされます。

どのファイルをダイアログボックスに表示するかを決定するために、typeFilter パラメータを使用できます。

FileReferenceList オブジェクトに対し、一度に 1 つの FileReference.browse() セッション、FileReference.download() セッション、または FileReferenceList.browse() セッションだけを実行できます。これは、一度に 1 つのダイアログボックスしか開けないからです。

パラメータ
typeFilter:Array (default = null) — ダイアログボックスに表示するファイルをフィルタにかける場合に使用する FileFilter インスタンスの配列です。このパラメータを省略すると、すべてのファイルが表示されます。詳細については、FileFilter クラスを参照してください。

戻り値
Boolean — パラメータが有効で、ファイル参照ダイアログボックスが表示された場合に、true を返します。

イベント
select:Event — アップロード対象の項目をユーザーがダイアログボックスで正常に選択したときに呼び出されます。
 
cancel:Event — ユーザーが [キャンセル] をクリックするかダイアログボックスを閉じた場合に、呼び出されます。

スロー
IllegalOperationError — 次の理由によりスローされます。1) 他の FileReference ブラウズセッション、または FileReferenceList ブラウズセッションが進行中の場合。ファイルブラウズのセッションは、一度に 1 つのみ実行できます。2) ユーザーの "mms.cfg" ファイルの設定により、この操作が禁止されている場合。
 
ArgumentError typeFilter 配列に、正しい形式の FileFilter オブジェクトが含まれていないと、例外がスローされます。正しいフィルタ形式の詳細については、FileFilter の説明を参照してください。

関連項目

イベントの詳細
cancelevent 
イベントオブジェクトの型: flash.events.Event
Event.type property = flash.events.Event.CANCEL

ユーザーがファイル参照ダイアログボックスを閉じると、送出されます(このダイアログボックスは、FileReferenceList.browse() メソッド、FileReference.browse() メソッド、またはFileReference.download() メソッドを呼び出したときに開かれます)。

cancelイベントオブジェクトの type プロパティの値を定義します。

このイベントには、次のプロパティがあります。

プロパティ
bubblesfalse
cancelablefalse は、キャンセルするデフォルトの動作がないことを示します。
currentTargetイベントリスナーで Event オブジェクトをアクティブに処理しているオブジェクトです。
target操作をキャンセルするオブジェクトへの参照です。

関連項目

selectevent  
イベントオブジェクトの型: flash.events.Event
Event.type property = flash.events.Event.SELECT

ユーザーがアップロードするファイルをファイル参照ダイアログボックスから 1 つ以上選択したときに送出されます。(このダイアログボックスは、FileReferenceList.browse() メソッド、FileReference.browse() メソッド、またはFileReference.download() メソッドを呼び出したときに開かれます)。ユーザーがファイルを選択し、[保存] などをクリックして操作を確認すると、ユーザーが選択したファイルを表す FileReference オブジェクトが FileReferenceList オブジェクトに設定されます。

select イベントオブジェクトの type プロパティの値を定義します。

このイベントには、次のプロパティがあります。

プロパティ
bubblesfalse
cancelablefalse は、キャンセルするデフォルトの動作がないことを示します。
currentTargetイベントリスナーで Event オブジェクトをアクティブに処理しているオブジェクトです。
targetアイテムが選択された FileReference オブジェクトです。

関連項目


次の例は、イベントを使用して複数ファイルのアップロードを管理する方法を示しています。 CustomFileReferenceList クラスは、FileReferenceList を拡張したクラスで、 complete イベントが含まれます。 このイベントは、FileReferenceList オブジェクト内の個々のファイルがアップロードされると送出されます。FileReferenceListExample クラスの LIST_COMPLETE イベントは、 FileReferenceList オブジェクト内のすべてのファイルがアップロードされると、 送出されます。

この例を実行するには、ファイルアップロードの受け取り処理を記述したスクリプトを、 http://www.[ドメイン名].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());
    }
}