Adobe AIR HTML - 如何动态加载位于app-storage中的图像?

时间:2010-09-08 12:28:40

标签: image dynamic air

我正在开发一个AIR应用程序,它生成一个动态客户端表示,从PHP框架API中提取所有必要的数据。在此过程中,我下载了大量图像并将其本地存储在用户的app-storage(air.File.applicationStorageDirectory)中。

旁注:我动态填充的HTML视图位于IFRAME沙箱中。

我有一个解析脚本,它尝试获取JSON数据并使用必要的字段填充页面。其中许多字段都是我需要本地引用的图像。我以为我可以使用<img src="app-storage:/path/to/img.jpg">简单地生成URL,但它似乎并没有真正加载图像。我的猜测是AIR不会动态处理app-storage:个url引用。有解决办法吗?我可以使用jQuery和load()吗?

以下是我正在使用的当前代码无效:

var pos = filename.lastIndexOf(".");
if (pos != -1) {
    ext = filename.substr(pos + 1, filename.length);
    switch (ext) {
        case 'gif':
        case 'jpg':
        case 'jpeg':
        case 'png':
        default:
            // update the source value
            $field.attr('src', 'app-storage:' + filename);
            break;
    }
}

我认为我可能在正确的轨道上,因为

的返回结果
air.File.applicationStorageDirectory('test')

app-storage:/test

非常感谢任何帮助!

2 个答案:

答案 0 :(得分:1)

最终解决方案是我必须正确设置IFRAME以获得应用程序安全级别访问权限,授予其正确使用句柄app-storage URL的权限。对于那些有兴趣了解如何执行此操作的人来说,第一步是直接将IFRAME文件加载到应用程序的主目录中:

<iframe id="childFrame" src="child.html" documentRoot="app:/" allowcrossDomainxhr="true" width="100%" height="100%"></iframe>

此沙箱的主要区别在于具有参数sandboxRoot

值得注意的是,在我的任何测试过程中,我从未遇到任何安全错误。似乎AIR本身没有正确处理app-storage URL。

答案 1 :(得分:0)

talking比您需要在那里允许安全策略。