使用 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>