使用 URLFilePromise 類別來建立檔案承諾物件,用於代表可以在 URL 取得的檔案或資料。使用
FILE_PROMISE_LIST
剪貼簿格式,將一或多個檔案承諾新增至剪貼簿。在以下範例中,會到 http://www.example.com/foo.txt 下載一個檔案,然後儲存至投放位置,變成 bar.txt。 (遠端和本機檔案名稱不必完全一樣)。
if( Clipboard.supportsFilePromise )
{
var filePromise:URLFilePromise = new URLFilePromise();
filePromise.request = new URLRequest("http://example.com/foo.txt");
filePromise.relativePath = "bar.txt";
var fileList:Array = new Array( filePromise );
var clipboard:Clipboard = new Clipboard();
clipboard.setData( ClipboardFormats.FILE_PROMISE_LIST_FORMAT, fileList );
NativeDragManager.doDrag( dragSource, clipboard );
}
將更多的檔案承諾物件新增至指定給剪貼簿的陣列,如此便可以允許使用者一次拖曳一個以上的檔案。您也可以在
relativePath
屬性中指定子目錄,這樣作業中的部分或所有檔案便會被移至與投放位置相對的子目錄中。
以下範例說明如何進行一項包含多個檔案承諾的拖曳作業。在這個範例中,
article.html
這個 html 網頁會以檔案承諾放在剪貼簿中,包含兩個連結的影像檔。 這兩個影像檔會複製到
images
子資料夾中,這樣便可以保有相對的連結。
if( Clipboard.supportsFilePromise )
{ //Create the promise objects
var filePromise:URLFilePromise = new URLFilePromise();
filePromise.request = new URLRequest("http://example.com/article.html");
filePromise.relativePath = "article.html";
var image1Promise:URLFilePromise = new URLFilePromise();
image1Promise.request = new URLRequest("http://example.com/images/img_1.jpg");
image1Promise.relativePath = "images/img_1.html";
var image2Promise:URLFilePromise = new URLFilePromise();
image2Promise.request = new URLRequest("http://example.com/images/img_2.jpg");
image2Promise.relativePath = "images/img_2.jpg";
//Put the promise objects onto the clipboard inside an array
var fileList:Array = new Array( filePromise, image1Promise, image2Promise );
var clipboard:Clipboard = new Clipboard();
clipboard.setData( ClipboardFormats.FILE_PROMISE_LIST_FORMAT, fileList );
//Start the drag operation
NativeDragManager.doDrag( dragSource, clipboard );
}