尝试在 AIR-app 中加载 swf 并使用 Loader 访问 FTP-server
Trying to load swf and access FTP-server with Loader in AIR-app
我正在创建一个加载其他 swf 文件的应用程序,这些 'windows' 做不同的(有时是复杂的)事情。
我想加载一个 swf 文件,该文件已下载到 documentsDirectory 并使用加载程序加载,效果很好。
如果 swf 想要访问 FTP-服务器,我会收到以下错误
*** Schending van beveiligingssandbox ***
Verbinding met ftp.strato.com:21 gestopt niet toegestaan vanaf file:///Users/alwin/Documents/ServConnect%20Manager/Apps/com-alwinlubbers-upallcars
Fout: Aanvraag voor bron op xmlsocket://ftp.strato.com:21 door aanvrager van file:///Users/alwin/Documents/ServConnect%20Manager/Apps/com-alwinlubbers-upallcars is geweigerd, omdat beleidsbestandsmachtigingen ontbreken.
大致翻译为:
*** Violation of security sandbox ***
Connection to ftp.strato.com:21 stopped not allowed from file: ///Users/alwin/Documents/ServConnect%20Manager/Apps/com-alwinlubbers-upallcars
Error: Request for resource at xmlsocket: //ftp.strato.com: 21 by requesting file: ///Users/alwin/Documents/ServConnect%20Manager/Apps/com-alwinlubbers-upallcars because policy file permissions are missing.
它通过套接字连接到服务器。通过 Loader.load(File.url)
.
的普通加载程序加载 swf
加载器上下文:
var appCont:LoaderContext = new LoaderContext(false, ApplicationDomain.currentDomain);
appCont.allowCodeImport = true;
总而言之:父应用程序是桌面 AIR 应用程序,加载的 swf 从服务器下载到用户的文档目录,在文件夹 'ServConnect Manager/Apps/{AppID}'
内。下载后,它会通过加载程序启动,因此在加载时,它是一个本地 swf 文件。加载的 swf 想要连接到 FTP 服务器以获取一些文件,但它不能,因为 'security' 沙箱。
提前致谢。 -阿尔文
我已经通过使用 .loadBytes() 而不是 .load() 加载 swf 来修复它。
首先,我使用加载程序将 swf 加载到 byteArray,如下所示:
var my_url1:URLRequest = new URLRequest("SWF/Lesson1.swf");
var urlloader:URLLoader = new URLLoader(my_url1);
urlloader.dataFormat = URLLoaderDataFormat.BINARY;
urlloader.addEventListener(Event.COMPLETE, function(event:Event):void
{
var myByteArray:ByteArray = URLLoader(event.target).data as ByteArray;
trace(myByteArray.length);
});
来源:Load external swf into bytearray with adobe flash
接下来,我使用 .loadBytes(myByteArray, appCont)
在主加载程序中加载了 swf
我正在创建一个加载其他 swf 文件的应用程序,这些 'windows' 做不同的(有时是复杂的)事情。
我想加载一个 swf 文件,该文件已下载到 documentsDirectory 并使用加载程序加载,效果很好。
如果 swf 想要访问 FTP-服务器,我会收到以下错误
*** Schending van beveiligingssandbox ***
Verbinding met ftp.strato.com:21 gestopt niet toegestaan vanaf file:///Users/alwin/Documents/ServConnect%20Manager/Apps/com-alwinlubbers-upallcars
Fout: Aanvraag voor bron op xmlsocket://ftp.strato.com:21 door aanvrager van file:///Users/alwin/Documents/ServConnect%20Manager/Apps/com-alwinlubbers-upallcars is geweigerd, omdat beleidsbestandsmachtigingen ontbreken.
大致翻译为:
*** Violation of security sandbox ***
Connection to ftp.strato.com:21 stopped not allowed from file: ///Users/alwin/Documents/ServConnect%20Manager/Apps/com-alwinlubbers-upallcars
Error: Request for resource at xmlsocket: //ftp.strato.com: 21 by requesting file: ///Users/alwin/Documents/ServConnect%20Manager/Apps/com-alwinlubbers-upallcars because policy file permissions are missing.
它通过套接字连接到服务器。通过 Loader.load(File.url)
.
加载器上下文:
var appCont:LoaderContext = new LoaderContext(false, ApplicationDomain.currentDomain);
appCont.allowCodeImport = true;
总而言之:父应用程序是桌面 AIR 应用程序,加载的 swf 从服务器下载到用户的文档目录,在文件夹 'ServConnect Manager/Apps/{AppID}'
内。下载后,它会通过加载程序启动,因此在加载时,它是一个本地 swf 文件。加载的 swf 想要连接到 FTP 服务器以获取一些文件,但它不能,因为 'security' 沙箱。
提前致谢。 -阿尔文
我已经通过使用 .loadBytes() 而不是 .load() 加载 swf 来修复它。
首先,我使用加载程序将 swf 加载到 byteArray,如下所示:
var my_url1:URLRequest = new URLRequest("SWF/Lesson1.swf");
var urlloader:URLLoader = new URLLoader(my_url1);
urlloader.dataFormat = URLLoaderDataFormat.BINARY;
urlloader.addEventListener(Event.COMPLETE, function(event:Event):void
{
var myByteArray:ByteArray = URLLoader(event.target).data as ByteArray;
trace(myByteArray.length);
});
来源:Load external swf into bytearray with adobe flash
接下来,我使用 .loadBytes(myByteArray, appCont)