2008-08-07 63 views
11

我已经编写了一个AIR应用程序,用于从服务器下载视频和文档。视频在应用程序内播放,但我希望用户能够在其本机应用程序中打开文档。使用AIR/Flex打开本地文件

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

我不得已才刚刚将文件复制到他们的桌面:\

回答

2

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

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

目前Adobe不支持在那里默认应用程序打开文件。将它传递给浏览器似乎是实现它的唯一方法。

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

2

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

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

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

特点

  • 启动本地应用程序和文档与所提供的apsystem库
  • 把整个屏幕的截图与所提供的apimaging库
  • 访问Outlook联系人从所提供的AIR应用程序apoutlook图书馆

http://aperture.fluorinefx.com/

12

您可以使用新的openWithDefaultApplication();功能是可用的文件类(我相信这只是在AIR 2提供)

如:

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

对于我来说:

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

由于路径“/ users/mydirectory/...”位于application sandbox之外,因此navigateToURL(file.nativePath)未起作用。 AIR仅允许使用navigateToURL()打开一些协议。