flash.net
public class FileReferenceList
继承FileReferenceList Inheritance EventDispatcher Inheritance Object

语言版本: ActionScript 3.0
运行时版本: AIR 1.0 Flash Player 9

FileReferenceList 类提供了让用户选择一个或多个要上载的文件的方法。FileReferenceList 对象将用户磁盘上的一组本地文件(一个或多个文件)表示为 FileReference 对象的数组。有关详细信息以及有关 FileReference 对象和 FileReference 类(可与 FileReferenceList 一起使用)的重要注意事项,请参阅 FileReference 类。

使用 FileReferenceList 类:

FileReferenceList 类包括 browse() 方法以及用于处理多个文件的 fileList 属性。调用 FileReferenceList.browse() 的过程中,对于 Linux 和 Mac OS X 10.1 及早期版本,将暂停 Flash Player 的独立和外部版本中以及 AIR 中的 SWF 文件播放。

查看示例

另请参见

FileReference


公共属性
 属性定义方
 Inheritedconstructor : Object
对类对象或给定对象实例的构造函数的引用。
Object
  fileList : Array
[只读 (read-only)] 一个 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 或 AIR 应用程序获得操作系统焦点并变为活动状态时将调度此事件。EventDispatcher
  当用户退出文件浏览对话框时调度。FileReferenceList
 Inherited[广播事件] Flash Player 或 AIR 应用程序失去操作系统焦点并变为非活动状态时将调度此事件。EventDispatcher
  当用户从文件浏览对话框选择一个或多个要上载的文件时调度。FileReferenceList
属性详细信息
fileList属性
fileList:Array  [只读 (read-only)]

语言版本: ActionScript 3.0
运行时版本: AIR 1.0 Flash Player 9

一个 FileReference 对象数组。

当调用了 FileReferenceList.browse() 方法并且用户已从 browse() 方法打开的对话框中选择了一个或多个文件后,此属性用 FileReference 对象数组来填充,数组中的每个对象表示一个用户选择的文件。然后,您可以通过 FileReference.upload() 方法使用此数组上载每个文件。必须一次上载一个文件。

每次对该 FileReferenceList 对象调用 browse() 时都要重新填充 fileList 属性。

FileReference 对象的属性在 FileReference 类文档中介绍。



实现
    public function get fileList():Array

另请参见

构造函数详细信息
FileReferenceList()构造函数
public function FileReferenceList()

语言版本: ActionScript 3.0
运行时版本: AIR 1.0 Flash Player 9

创建新的 FileReferenceList 对象。在对 FileReferenceList 对象调用 browse() 方法且用户选择一个或多个文件之前,该对象不包含任何内容。当对 FileReference 对象调用 browse() 时,该对象的 fileList 属性用 FileReference 对象数组来填充。

另请参见

方法详细信息
browse()方法
public function browse(typeFilter:Array = null):Boolean

语言版本: ActionScript 3.0
运行时版本: AIR 1.0 Flash Player 9

显示文件浏览对话框,让用户选择一个或多个要上载的本地文件。该对话框对于用户的操作系统来说是本机的。

在 Flash Player 10 和更高版本中,只有响应用户事件(例如,在鼠标单击或按键事件的事件处理函数中)才能成功调用此方法。否则,调用此方法将导致 Flash Player 引发错误。

当调用此方法并且用户成功选择文件时,此 FileReferenceList 对象的 fileList 属性用 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 文档。
 
Error — 为了响应用户动作(如鼠标事件或按键事件),将不会调用此方法。

另请参见

事件详细信息
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 常量定义 cancel 事件对象的 type 属性的值。

此事件具有以下属性:

属性
bubbles false
cancelable false;没有要取消的默认行为。
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() 方法时显示此对话框。)当用户选择文件并确认该操作(例如,通过单击“保存”)时,会使用表示用户选择的文件的 FileReference 对象填充 FileReferenceList 对象。

Event.SELECT 常量定义 select 事件对象的 type 属性的值。

此事件具有以下属性:

属性
bubbles false
cancelable false;没有要取消的默认行为。
currentTarget 当前正在使用某个事件侦听器处理 Event 对象的对象。
target 对象,已在其中选定了一个项目。

另请参见

示例 如何使用示例
FileReferenceListExample.as

下例说明如何使用事件来管理多个文件的上载。CustomFileReferenceList 类扩展了 FileReferenceList,它包含一个 complete 事件,在上载 FileReferenceList 对象中的各个文件时将调度该事件。FileReferenceList 对象中的所有文件上载完毕后,将调度 FileReferenceListExample 类中的 LIST_COMPLETE 事件。

若要运行该示例,请插入一个编写好以接受 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());
    }
}