我正在使用Adobe Air for iPad / iPhone应用程序。
我也使用StageWebViewBridge
(https://github.com/paleozogt/StageWebViewBridge)作为主要网络内容展示容器。
我的应用程序适用于桌面版,但StageWebViewBridge
的{{1}}打破了HTML文件上传功能:
StageWebViewDisk
即,无论何时从真实的iPad设备浏览并从<input id="user_avatar" name="user[avatar]" style="width:100%" type="file" />
或Take Photo or Video
中选择文件,上述Choose Existing
输入都不会得到更新。
我相信某些路径被user_avatar
搞砸了。
您可以在此处找到StageWebViewDisk.initialize(stage)
的完整来源:
https://github.com/paleozogt/StageWebViewBridge/blob/master/StageWebViewBridge/src/es/xperiments/media/StageWebViewDisk.as
以下代码段非常可疑:
StageWebViewDisk
我调试了很多,最后发现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
,效果非常好。
我不熟悉iOS app / cache目录。
请告诉我。
答案 0 :(得分:0)
我终于明白了:
_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";