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