使用AIR / Flex打开本地文件

时间:2008-08-07 17:31:12

标签: flex actionscript-3 air

我编写了一个从服务器下载视频和文档的AIR应用程序。视频在应用程序内部播放,但我希望用户能够在其原生应用程序中打开文档。

我正在寻找一种方法来提示用户在存储在应用程序存储目录中的本地文件上打开/另存为。我尝试过使用FileReference + URLRequest类,但这会抛出一个需要远程URL的异常。

我的最后一招只是将文件复制到桌面:\

5 个答案:

答案 0 :(得分:13)

您可以使用File类中可用的新openWithDefaultApplication();函数(我相信它仅在AIR 2中可用)

例如:

var file:File = File.desktopDirectory.resolvePath(fileLocation);
file.openWithDefaultApplication();

答案 1 :(得分:2)

这是FluorineFx Aperture框架的第一个版本。

该框架为AIR桌面应用程序提供本机操作系统集成(仅限Windows)支持。

该框架以非侵入方式扩展Adobe AIR应用程序:只需使用AIR应用程序重新分发提供的库,在运行时框架将自动挂钩到您的应用程序。

功能

  • 使用提供的apsystem库启动本机应用程序和文档
  • 使用提供的apimaging库
  • 截取整个屏幕的屏幕截图
  • 使用提供的apoutlook库从Air应用程序访问Outlook联系人

http://aperture.fluorinefx.com/

答案 2 :(得分:2)

只有在不移动文件并告诉用户将其传递给浏览器的情况下,我才能弄清楚如何做到这一点。

navigateToURL(new URLRequest(File.applicationStorageDirectory.nativePath + "/courses/" + fileName));

答案 3 :(得分:0)

对我而言:

var request:URLRequest = new URLRequest();
request.url = file.url;
navigateToURL(request, "_blank");

navigateToURL(file.nativePath)自路径以来没有工作," / users / mydirectory /..."在application sandbox之外。 AIR仅允许使用navigateToURL()打开某些协议。

答案 4 :(得分:0)

目前adobe不支持默认应用程序中的打开文件。将它传递给浏览器似乎是让它工作的唯一方法。

然而,您可以使用FileStream并使用一些javascript来编写一个小的html文件,该文件将iframe的位置设置为该文件,然后在100ms左右后调用window.close()。然后在浏览器中打开该文件。