Adobe AIR HTML - Как динамически загрузить изображение, находящееся в хранилище приложений? - PullRequest
1 голос
/ 08 сентября 2010

Я работаю над приложением AIR, которое генерирует динамическое представление клиента, извлекая все необходимые данные из API-интерфейса PHP.В процессе я загружаю большое количество изображений и храню их локально в хранилище приложений пользователя (air.File.applicationStorageDirectory).

Примечание: динамически заполняемое представление HTML находится в изолированной программной среде IFRAME.

У меня есть скрипт синтаксического анализа, который пытается получить данные JSON и заполнить страницу.с необходимыми полями.Многие из этих полей являются изображениями, которые мне нужны для локальной ссылки.Я думал, что смогу просто сгенерировать URL-адрес, используя <img src="app-storage:/path/to/img.jpg">, но, похоже, он не загружает изображение.Я предполагаю, что 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 ]

1 голос
/ 10 сентября 2010

В результате было решено, что я должен был правильно настроить IFRAME для доступа к уровню безопасности приложения, предоставив ему привилегии для правильного использования дескрипторов app-storage. Для тех, кто интересуется, как это сделать, первым делом нужно просто загрузить файл IFRAME, который вы хотите загрузить, прямо в главный каталог приложения:

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

Ключевое отличие этой песочницы в том, что не имеет параметр sandboxRoot.

Стоит отметить, что я ни разу не сталкивался с ошибками безопасности ни в одном из моих тестов. Казалось, что URL-адрес хранилища приложений просто неправильно обрабатывается самой AIR.

0 голосов
/ 10 сентября 2010

человек говорят , чем вам нужно разрешить политику безопасности там.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...