StageWebViewDisk прерывает загрузку файлов на iPad (iOS?)

Я использую приложение Adobe Air для iPad/iPhone.

Я также использую StageWebViewBridge ( https://github.com/paleozogt/StageWebViewBridge) в качестве основного контейнера для отображения веб-материалов.

Мое приложение хорошо работает для настольной версии, но StageWebViewBridge"s StageWebViewDisk ломает HTML-функцию загрузки файлов:

<input id="user_avatar" name="user[avatar]" style="width:100%" type="file" />

т. е. всякий раз, когда файл просматривается и выбирается из Take Photo or Video или же Choose Existing с реального устройства iPad, выше user_avatar вход НЕ обновляется вообще.

Я считаю, что некоторые пути испорчены StageWebViewDisk.initialize(stage),

Вы можете найти полный источник StageWebViewDisk здесь: https://github.com/paleozogt/StageWebViewBridge/blob/master/StageWebViewBridge/src/es/xperiments/media/StageWebViewDisk.as

И следующий фрагмент кода очень подозрительно:

case isIPHONE :
    /* new iOS 5.0 Data Storage Guidelines
     * https://developer.apple.com/icloud/documentation/data-storage/
     * https://developer.apple.com/library/ios/#qa/qa1719/_index.html
     */
    _appCacheFile = new File(File.applicationDirectory.nativePath +"/\.\./Library/Caches");

    _applicationCacheDirectory = new File( _appCacheFile.nativePath ).url;
    _applicationRootPath = _applicationCacheDirectory + '/' + getWorkingDir();
    _applicationSourcesDirectory = new File( new File( "app:/" + _document_root ).nativePath ).url;
    _appDocsDirectory = File.documentsDirectory.url;

    /* new iOS 5.0 Data Storage Guidelines
     * https://developer.apple.com/icloud/documentation/data-storage/
     * https://developer.apple.com/library/ios/#qa/qa1719/_index.html
     */                 
    _applicationTempDir = new File(File.applicationDirectory.nativePath +"/\.\./tmp");

    // To acomplish the Apple  Data Storage Guidelines Rules delete our TMP files dir at exit
    NativeApplication.nativeApplication.addEventListener(Event.EXITING, deleteTempFolder,false,0,true );
    NativeApplication.nativeApplication.addEventListener(Event.DEACTIVATE, deleteTempFolder, false, 0, true);                   

    break;

Я много отлаживал и, наконец, узнал, что StageWebViewDisk.initialize(stage) вызывает проблему.

Доказательством является то, что, когда я не использую StageWebViewDisk.initialize(stage)вместо этого непосредственно назначьте stage в StageWebViewBridge._view.stage, это работает очень хорошо.

Я не знаком с каталогами приложений / кэша iOS.

Пожалуйста, посоветуй мне.

1 ответ

Решение

Я наконец-то понял:

_applicationTempDir = new File(File.applicationDirectory.nativePath +"/\.\./SWVBTmp");
// It seems "tmp" is being used by the iOS system (such as the html file upload), so we changed to "SWVBTmp"; 
Другие вопросы по тегам