放置远程文件

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 属性中指定子目录,以便将操作中包括的部分文件或所有文件放置到子文件夹(相对于放置位置)中。

以下示例演示如何启动包括多个文件释放的拖动操作。在此示例中,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 ); 
}