使用AIR/Flex打开本地文件

12
我编写了一个AIR应用程序,可从服务器下载视频和文档。这些视频在应用程序内播放,但我希望用户能够在其本地应用程序中打开这些文档。
我正在寻找一种方法来提示用户在应用存储目录中打开/另存为本地文件。我已尝试使用FileReference + URLRequest类,但这会引发异常,因为它需要一个远程URL。
我的最后一个办法就是将文件复制到他们的桌面上:\
5个回答

13

你可以使用File类上可用的新函数openWithDefaultApplication();(我认为它仅在AIR 2中可用)

例如:

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

3

我能想到的唯一方法是将文件传递给浏览器,而不是直接移动文件并告诉用户。

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

2
这是FluorineFx Aperture框架的首次发布。
该框架提供本地操作系统集成支持(仅限Windows)用于AIR桌面应用程序。
该框架以非侵入性方式扩展Adobe AIR应用程序:只需在运行时与您的AIR应用程序一起重新分发提供的库,框架将自动钩入您的应用程序。 特点
  • 使用提供的apsystem库启动本机应用程序和文档
  • 使用提供的apimaging库截取整个屏幕的截图
  • 使用提供的apoutlook库从Air应用程序访问Outlook联系人
http://aperture.fluorinefx.com/

0

对我来说,这是:

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

navigateToURL(file.nativePath)无法工作,因为路径“/users/mydirectory/…”在应用程序沙盒之外。AIR只允许使用navigateToURL()打开一些协议。


0

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

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接