Upuszczanie plików zdalnych

Adobe AIR 2 i starsze wersje

Klasa URLFilePromise umożliwia tworzenie obiektów obietnic plików reprezentujących pliki lub dane dostępne pod adresem URL. Aby dodać jeden lub większą liczbę obiektów obietnic plików do schowka, należy użyć formatu schowka FILE_PROMISE_LIST . W poniższym przykładzie pojedynczy plik dostępny pod adresem http://www.example.com/foo.txt jest pobierany i zapisywany w miejscu upuszczenia jako bar.txt. (Nazwa pliku zdalnego nie musi być identyczna z nazwą pliku lokalnego).

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

Można zezwolić użytkownikowi na przeciąganie więcej niż jednego pliku naraz, dodając więcej obiektów obietnic plików do tablicy przypisywanej do schowka. Można także we właściwości relativePath określić podkatalogi, tak aby niektóre lub wszystkie pliki uwzględnione w operacji zostały umieszczone w podfolderze względnym w stosunku do miejsca upuszczenia.

Poniższy przykład ilustruje sposób inicjowania operacji przeciągania obejmującej więcej niż jedną obietnicę pliku. W tym przykładzie strona html o nazwie article.html jest umieszczana w schowku jako obietnica pliku, razem z dwoma plikami obrazów, do których strona ta zawiera łącza. Obrazy są kopiowane do podfolderu images , tak aby łącza względne pozostały poprawne.

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