放置远程文件

Adobe AIR 2 和更高版本

使用 URLFilePromise 类创建表示 URL 上可用文件或数据的文件释放对象。使用 FILE_PROMISE_LIST 剪贴板格式将一个或多个文件释放对象添加到剪贴板。在以下示例中,从 http://www.example.com/foo.txt 下载一个单独的文件,并作为 bar.txt 保存到放置位置。(远程和本地文件名不必匹配。)

<html> 
<head> 
<script src="AIRAliases.js"></script> 
<script src="aircore.swf" type="application/x-shockwave-flash"></script> 
<script language="javascript"> 
    function init(){ 
        var source = document.getElementById('source'); 
        source.addEventListener("dragstart", dragStartHandler); 
    } 
     
    function dragStartHandler(event){         
        event.preventDefault(); 
        startDrag(); 
    } 
    function startDrag() 
    { 
        var filePromise = new air.URLFilePromise(); //defined in aircore.swf 
        filePromise.request = new air.URLRequest("http://example.com/foo.txt"); 
        filePromise.relativePath = "bar.txt"; 
        var fileList = new Array( filePromise ); 
        var clipboard = new air.Clipboard(); 
        clipboard.setData( air.ClipboardFormats.FILE_PROMISE_LIST_FORMAT, fileList ); 
        air.NativeDragManager.doDrag( window.htmlLoader, clipboard ); 
    }     
</script> 
</head> 
<body onLoad="init()"> 
    <p id="source" style="-webkit-user-drag:element; -webkit-user-select:none;"> 
        Drag to file system 
    </p> 
</body> 
</html>

通过将多个文件释放对象添加到分配给剪贴板的数组,您可以允许用户一次拖动多个文件。您还可以在 relativePath 属性中指定子目录,以便将操作中包括的部分文件或所有文件放置到子文件夹(相对于放置位置)中。

以下示例演示如何启动包括多个文件释放的拖动操作。在此示例中,HTML 页面 article.html 作为文件释放与两个链接的图像文件一起放置在剪贴板上。这些图像被复制到 images 子文件夹中,以便保持相对链接。

<html> 
<head> 
<script src="AIRAliases.js"></script> 
<script src="aircore.swf" type="application/x-shockwave-flash"></script> 
<script language="javascript"> 
    function init(){ 
        var source = document.getElementById('source'); 
        source.addEventListener("dragstart", dragStartHandler); 
    } 
     
    function dragStartHandler(event){         
        event.preventDefault(); 
        startDrag(); 
    } 
    function startDrag() 
    { 
        var filePromise = new air.URLFilePromise(); 
        filePromise.request = new air.URLRequest("http://example.com/article.html"); 
        filePromise.relativePath = "article.html"; 
     
        var image1Promise = new air.URLFilePromise(); 
        image1Promise.request = new air.URLRequest("http://example.com/images/img_1.jpg"); 
        image1Promise.relativePath = "images/img_1.html"; 
        var image2Promise = new air.URLFilePromise(); 
        image2Promise.request = new air.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 = new Array( filePromise, image1Promise, image2Promise ); 
        var clipboard = new air.Clipboard(); 
        clipboard.setData( air.ClipboardFormats.FILE_PROMISE_LIST_FORMAT, fileList ); 
        air.NativeDragManager.doDrag( window.htmlLoader, clipboard ); 
    }     
</script> 
</head> 
<body onLoad="init()"> 
    <p id="source" style="-webkit-user-drag:element; -webkit-user-select:none;"> 
        Drag to file system 
    </p> 
</body> 
</html>