套件 | 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