| 套件 | 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() 時,FileReference 物件的陣列便會填入該物件的 fileList 屬性。
相關 API 元素
browse | () | 方法 |
public function browse(typeFilter:Array = null):Boolean| 語言版本: | ActionScript 3.0 |
| 執行階段版本: | AIR 1.0, Flash Player 9 |
會顯示檔案瀏覽對話方塊,讓使用者選取一個或多個要上傳的本機檔案。 這個對話方塊是使用者作業系統本身所提供的。
在 Flash Player 10 和更新版本中,只有在回應使用者事件 (例如,在按下滑鼠或按下按鍵事件的事件處理常式中) 時,才能成功呼叫這個方法。否則,呼叫這個方法會導致 Flash Player 擲出錯誤。
當您呼叫此方法而且使用者順利選取檔案時,FileReference 物件的陣列 (每個物件都代表使用者選取的檔案) 便會填入此 FileReferenceList 物件的 fileList 屬性。 此後每次呼叫 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, 03:47 PM Z
隱藏繼承公用屬性
顯示繼承公用屬性