air.desktopURLFilePromise URLFilePromise 类允许将通过 URL 访问的资源作为 file promise(文件承诺)拖动到 AIR 应用程序外。flash.desktop:IFilePromiseflash.events:EventDispatcher URLFilePromise 类允许将通过 URL 访问的资源作为 file promise(文件承诺)拖动到 AIR 应用程序外。

URLFilePromise 类可使用 URLStream 和 URLRequest 对象作为数据源实现 IFilePromise 接口。实现可为使用 HTTP 或 URLStream 类支持的其他协议检索的文件提供拖放支持。

创建 URL file promise:

  1. 构建并初始化一个或多个 URLFilePromise 对象。
  2. 将 URLFilePromise 对象添加到数组。
  3. 使用 ClipboardFormat FILE_PROMISE_LIST 为新 Clipboard 对象添加数组。
  4. 响应用户手势,调用 NativeDragManager startDrag() 方法,传递包含 file promise 数组的 Clipboard 对象。

当用户完成拖动操作时,运行时将下载每个 file promise 的数据。访问由 URLFilePromise 对象的 request 属性指定的 URL 上的数据,并将其保存到在 relativePath 属性中指定的文件中。文件保存到放置位置的相对位置。因此,如果相对路径是 foo/bar.txt,并且文件承诺放置到 home 目录下,则创建的文件的位置是:home/foo/bar.txt。当发生错误时,不会创建文件。

若要支持不能通过 URLStream 类访问的数据源,请实现 IFilePromise 接口。

注意:AIR 运行时自动调用 IFilePromise 方法,open()close()reportError()。永远不应该通过应用程序逻辑调用这些方法。同样,由此 URLFilePromise 对象调度的 openprogresscompleteclose 事件主要用于调试目的。应用程序不需要响应这些事件。

此类包含在 aircore.swc 文件中。创建 Adobe® AIR 项目时,Adobe® Flash Builder 将自动加载此类。Adobe® Flex SDK 也包含此 aircore.swc 文件,当您使用 Flex SDK 编译应用程序时应包含此文件。

要在 Adobe ® Flash ® Professional(CS4 或更高版本)中使用 air.desktop 包:

  1. 选择“文件”>“发布设置”命令。
  2. 在 Flash 面板中,单击 ActionScript 3.0 对应的“设置”按钮。选择“库路径”。
  3. 单击“浏览到 SWC 文件”按钮。浏览到 Adobe Flash Professional 安装文件夹中的 Adobe Flash CSn/AIKn.n/frameworks/libs/air/aircore.swc 文件。
  4. 单击“确定”按钮。
  5. 向 ActionScript 3.0 代码添加以下 import 语句:import air.desktop.~~;
IFilePromise 接口Clipboard 类ClipboardFormats 类NativeDragManager 类URLStream 类URLRequest 类securityError 当安全错误阻止文件下载时调度。flash.events.SecurityErrorEvent.SECURITY_ERRORflash.events.SecurityErrorEvent 当安全错误阻止文件下载时调度。 httpStatus 为 HTTP 请求报告请求状态代码进行调度。flash.events.HTTPStatusEvent.HTTP_STATUSflash.events.HTTPStatusEvent 为 HTTP 请求报告请求状态代码进行调度。 httpResponseStatus 为 HTTP 请求报告响应头进行调度。flash.events.HTTPStatusEvent.HTTP_RESPONSE_STATUSflash.events.HTTPStatusEvent 为 HTTP 请求报告响应头进行调度。 ioError 当 IOError 阻止文件下载时进行调度。flash.events.IOErrorEvent.IO_ERRORflash.events.IOErrorEvent 当 IOError 阻止文件下载时进行调度。 progress 当可从基础 URLStream 读取数据块时进行调度。flash.events.ProgressEvent.PROGRESSflash.events.ProgressEvent 当可从基础 URLStream 读取数据块时进行调度。

注意:该 AIR 运行时使用此事件管理异步数据检索进程。通常,您的应用程序没有必要采取任何操作来响应此事件。

complete 当文件数据已完全下载时进行调度。flash.events.Event.COMPLETEflash.events.Event 当文件数据已完全下载时进行调度。

注意:该 AIR 运行时使用此事件管理异步数据检索进程。通常,您的应用程序没有必要采取任何操作来响应此事件。

open 当基础 URLStream 连接打开时进行调度。flash.events.Event.OPENflash.events.Event 当基础 URLStream 连接打开时进行调度。

注意:该 AIR 运行时使用此事件管理异步数据检索进程。通常,您的应用程序没有必要采取任何操作来响应此事件。

URLFilePromise 创建 URLFilePromise 对象。 创建 URLFilePromise 对象。

使用此 URLFilePromise 对象之前必须设置 requestrelativePath 属性。

close 在拖放操作期间,允许 AIR Runtime 在适当时间关闭数据源。 在拖放操作期间,允许 AIR 运行时在适当时间关闭数据源。

不要在您的应用程序逻辑中调用此函数。

open 在拖放操作期间,允许 AIR Runtime 在适当时间打开数据源。flash.utils:IDataInput 在拖放操作期间,允许 AIR 运行时在适当时间打开数据源。

不要在您的应用程序逻辑中调用此函数。

reportError 允许 AIR 运行时报告在拖放操作期间发生的错误。eflash.events:ErrorEvent 允许 AIR Runtime 报告在拖放操作期间发生的错误。

URLFilePromise 对象将重新调度报告的任何错误事件。不要在您的应用程序逻辑中调用此函数。

isAsync 表示资源数据是否异步可用。Boolean 表示资源数据是否异步可用。

因为 URL 流本身是异步的,所以 URLFilePrmise 对象的 isAsync 属性始终为 true

relativePath 已创建的文件的路径和文件名,相对于放置目标。String 已创建的文件的路径和文件名,相对于放置目标。

路径可以包括子目录(根据放置位置进行解析)。根据需要创建子目录。当包括子目录时,使用 File.separator 常量为当前操作系统插入相应的路径分隔符。不允许使用 .. 快捷键导航到父目录。

文件名不需要与远程资源的文件名相同。

request 标识作为拖放操作结果复制的资源的 URLRequest。flash.net:URLRequest 标识作为拖放操作结果复制的资源的 URLRequest。