包 | flash.net |
类 | public class FileReferenceList |
继承 | FileReferenceList EventDispatcher Object |
语言版本: | ActionScript 3.0 |
运行时版本: | AIR 1.0, Flash Player 9 |
使用 FileReferenceList 类:
- 将该类实例化:
var myFileRef = new FileReferenceList();
- 调用
FileReferenceList.browse()
方法,该方法将打开一个对话框,让用户选择一个或多个要上载的文件:myFileRef.browse();
- 在成功调用
browse()
方法之后,使用 FileReference 对象数组来填充 FileReferenceList 对象的fileList
属性。 - 对
fileList
数组中的每个元素调用FileReference.upload()
。
FileReferenceList 类包括 browse()
方法以及用于处理多个文件的 fileList
属性。调用 FileReferenceList.browse()
的过程中,对于 Linux 和 Mac OS X 10.1 及早期版本,将暂停 Flash Player 的独立和外部版本中以及 AIR 中的 SWF 文件播放。
相关 API 元素
属性 | 由以下参数定义 | ||
---|---|---|---|
constructor : Object
对类对象或给定对象实例的构造函数的引用。 | Object | ||
fileList : Array [只读]
一个 FileReference 对象数组。 | FileReferenceList |
方法 | 由以下参数定义 | ||
---|---|---|---|
创建新的 FileReferenceList 对象。 | FileReferenceList | ||
addEventListener(type:String, listener:Function, useCapture:Boolean = false, priority:int = 0, useWeakReference:Boolean = false):void
使用 EventDispatcher 对象注册事件侦听器对象,以使侦听器能够接收事件通知。 | EventDispatcher | ||
显示文件浏览对话框,让用户选择一个或多个要上载的本地文件。 | FileReferenceList | ||
将事件调度到事件流中。 | EventDispatcher | ||
检查 EventDispatcher 对象是否为特定事件类型注册了任何侦听器。 | EventDispatcher | ||
表示对象是否已经定义了指定的属性。 | Object | ||
表示 Object 类的实例是否在指定为参数的对象的原型链中。 | Object | ||
表示指定的属性是否存在、是否可枚举。 | Object | ||
从 EventDispatcher 对象中删除侦听器。 | EventDispatcher | ||
设置循环操作动态属性的可用性。 | Object | ||
返回此对象的字符串表示形式,其格式设置遵守区域设置特定的约定。 | Object | ||
返回指定对象的字符串表示形式。 | Object | ||
返回指定对象的原始值。 | Object | ||
检查是否用此 EventDispatcher 对象或其任何祖代为指定事件类型注册了事件侦听器。 | EventDispatcher |
事件 | 摘要 | 由以下参数定义 | ||
---|---|---|---|---|
[广播事件] Flash Player 或 AIR 应用程序获得操作系统焦点并变为活动状态时将调度此事件。 | EventDispatcher | |||
当用户退出文件浏览对话框时调度。 | FileReferenceList | |||
[广播事件] Flash Player 或 AIR 应用程序失去操作系统焦点并变为非活动状态时将调度此事件。 | EventDispatcher | |||
当用户从文件浏览对话框选择一个或多个要上载的文件时调度。 | FileReferenceList |
fileList | 属性 |
fileList:Array
[只读] 语言版本: | 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
相关 API 元素
FileReferenceList | () | 构造函数 |
public function FileReferenceList()
语言版本: | ActionScript 3.0 |
运行时版本: | AIR 1.0, Flash Player 9 |
创建新的 FileReferenceList 对象。在对 FileReferenceList 对象调用 browse()
方法且用户选择一个或多个文件之前,该对象不包含任何内容。当对 FileReference 对象调用 browse()
时,该对象的 fileList
属性用 FileReference
对象数组来填充。
相关 API 元素
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: — 当用户从对话框中成功选择了要上载的项时进行调用。
| |
cancel: — 在用户通过单击“取消”或关闭对话框来取消对话框时调用。
|
引发
IllegalOperationError — 在以下情况下引发:1) 另一个 FileReference 或 FileReferenceList 浏览会话正在进行中;每次仅能执行一个文件浏览会话。2) 用户 mms.cfg 文件中的某个设置禁止此操作。
| |
ArgumentError — 如果 typeFilter 数组包含格式不正确的 FileFilter 对象,将引发异常。有关过滤器正确格式化的详细信息,请参阅 FileFilter 文档。
| |
Error — 为了响应用户动作(如鼠标事件或按键事件),将不会调用此方法。
|
相关 API 元素
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 | 对已取消其操作的对象的引用。 |
相关 API 元素
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 | 对象,已在其中选定了一个项目。 |
相关 API 元素
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()); } }
Tue Jun 12 2018, 11:04 AM Z