| 包 | 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 文件播放。
另请参见
| 属性 | 定义方 | ||
|---|---|---|---|
![]() | constructor : Object
对类对象或给定对象实例的构造函数的引用。 | Object | |
| fileList : Array [只读 (read-only)] 一个 FileReference 对象数组。 | FileReferenceList | ||
![]() | prototype : Object [静态]
对类或函数对象的原型对象的引用。 | Object | |
| 方法 | 定义方 | ||
|---|---|---|---|
创建新的 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 | |
![]() | 检查是否用此 EventDispatcher 对象或其任何始祖为指定事件类型注册了事件侦听器。 | EventDispatcher | |
| 事件 | 摘要 | 定义方 | ||
|---|---|---|---|---|
![]() | [广播事件] Flash Player 或 AIR 应用程序获得操作系统焦点并变为活动状态时将调度此事件。 | EventDispatcher | ||
| 当用户退出文件浏览对话框时调度。 | FileReferenceList | |||
![]() | [广播事件] 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: — 当用户从对话框中成功选择了要上载的项时进行调用。 | |
cancel: — 在用户通过单击“取消”或关闭对话框来取消对话框时调用。 |
IllegalOperationError — 在以下情况下引发:1) 另一个 FileReference 或 FileReferenceList 浏览会话正在进行中;每次仅能执行一个文件浏览会话。2) 用户 mms.cfg 文件中的某个设置禁止此操作。 | |
ArgumentError —
如果 typeFilter 数组包含格式不正确的 FileFilter 对象,将引发异常。有关过滤器正确格式化的详细信息,请参阅 FileFilter 文档。
| |
Error — 为了响应用户动作(如鼠标事件或按键事件),将不会调用此方法。 |
另请参见
| cancel | 事件 |
flash.events.Eventflash.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.Eventflash.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
| 对象,已在其中选定了一个项目。 |
另请参见
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());
}
}