关于动作脚本3:使用AIR / Flex打开本地文件

关于动作脚本3:使用AIR / Flex打开本地文件

Open local file with AIR / Flex

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

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

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


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

例如:

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

只有这样,我才能弄清楚如何做到这一点,而不仅仅是移动文件并告诉用户将其传递给浏览器。

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

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

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

该框架以一种非侵入性的方式扩展了Adobe AIR应用程序:只需将所提供的库随AIR应用程序一起重新分发,在运行时,该框架将自动挂接到您的应用程序中。

功能

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

http://aperture.fluorinefx.com/


对我来说是:

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

navigateToURL(file.nativePath)无效,因为路径" / users / mydirectory / ..."在应用程序沙箱外部。 AIR仅允许使用navigateToURL()

打开某些协议。


当前,adobe不支持在默认应用程序中打开文件。将其传递给浏览器似乎是使其正常工作的唯一方法。

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


推荐阅读