Воспользуйтесь классом 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
, чтобы поместить некоторые или все включенные в операцию файлы в подпапку местоположения перетаскивания.
В следующем примере показано, как запустить операцию перетаскивания, включающую несколько предварительных образов файла. В этом примере HTML-страница
article.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 );
}