我已经编写了一个AIR应用程序,用于从服务器下载视频和文档。视频在应用程序内播放,但我希望用户能够在其本机应用程序中打开文档。使用AIR/Flex打开本地文件
我正在寻找一种方法来提示用户打开/另存为存储在应用程序存储目录中的本地文件。我尝试过使用FileReference + URLRequest类,但是这会引发一个异常,它需要一个远程URL。
我不得已才刚刚将文件复制到他们的桌面:\
我已经编写了一个AIR应用程序,用于从服务器下载视频和文档。视频在应用程序内播放,但我希望用户能够在其本机应用程序中打开文档。使用AIR/Flex打开本地文件
我正在寻找一种方法来提示用户打开/另存为存储在应用程序存储目录中的本地文件。我尝试过使用FileReference + URLRequest类,但是这会引发一个异常,它需要一个远程URL。
我不得已才刚刚将文件复制到他们的桌面:\
只有这样我能想出如何做到这一点不只是移动文件,并告诉用户是将其传递给浏览器。
navigateToURL(new URLRequest(File.applicationStorageDirectory.nativePath + "/courses/" + fileName));
目前Adobe不支持在那里默认应用程序打开文件。将它传递给浏览器似乎是实现它的唯一方法。
然而,您可以使用FileStream并用一些JavaScript编写一个小的html文件,该文件将iframe的位置设置为该文件,然后在100ms左右后调用window.close()。然后在浏览器中打开该文件。
这是FluorineFx Aperture框架的第一个版本。
该框架为AIR桌面应用程序提供本机操作系统集成(仅限Windows)支持。
该框架以非侵入式方式扩展Adobe AIR应用程序:只需将提供的库与AIR应用程序重新分发,运行时框架将自动挂接到您的应用程序中。
特点
您可以使用新的openWithDefaultApplication();
功能是可用的文件类(我相信这只是在AIR 2提供)
如:
var file:File = File.desktopDirectory.resolvePath(fileLocation);
file.openWithDefaultApplication();
对于我来说:
var request:URLRequest = new URLRequest();
request.url = file.url;
navigateToURL(request, "_blank");
由于路径“/ users/mydirectory/...”位于application sandbox之外,因此navigateToURL(file.nativePath)
未起作用。 AIR仅允许使用navigateToURL()
打开一些协议。