代码之家  ›  专栏  ›  技术社区  ›  Corey Ballou

adobeair HTML-如何动态加载位于应用程序存储中的图像?

  •  1
  • Corey Ballou  · 技术社区  · 14 年前

    我正在开发一个AIR应用程序,它生成一个动态客户机表示,从PHP框架API中提取所有必要的数据。在这个过程中,我下载了大量的图片,并将它们本地存储在用户的应用程序存储中(air.File.ApplicationStorage目录).

    我有一个解析脚本,它试图获取JSON数据并用必要的字段填充页面。其中许多字段都是我需要在本地引用的图像。我想我可以用 <img src="app-storage:/path/to/img.jpg"> 但它似乎并没有真正加载图像。我猜空气不能处理 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 回复  |  直到 14 年前
        1
  •  1
  •   Corey Ballou    14 年前

    解决方案是,我必须正确地设置IFRAME,使其具有应用程序安全级别的访问权限,并授予它使用handle的权限 app-storage 正确的URL。对于那些想知道如何执行此操作的人,第一步是将希望直接加载的IFRAME文件放在应用程序的主目录中:

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

    这个沙盒的关键区别在于 有参数吗 sandboxRoot

    值得注意的是,在我的测试过程中,我从来没有遇到过任何安全错误。似乎AIR本身并没有正确处理应用程序存储URL。

        2
  •  0
  •   Eugene    14 年前

    talking 你需要允许安全策略。