投放遠端檔案

Adobe AIR 2 以及更新的版本

使用 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 ); 
}