关于flex跨域读取一个图片
比如 假设你的服务器事
www.myserver.com
而你的一个flex文件位于
www.myserver.com
/flex/myfalsh.swf
当一个客户来访问你的这个myfalsh.swf 文件 而你的这个文件又要去
www.otherserver.com/img/1.jpg
这里把这个图片加载到flash中
怎么办? 最简单的方法就是 var l:loader = new loader; l.load(new urlrequest("")); 这个方式如果你的flash是直接放在本地目录上运行那还可以
放在服务器上 加载 立马 报错
安全沙箱冲突
看了看loader 的 load的方法load
(request:
URLRequest
, context:
LoaderContext
= null):
void
context:LoaderContext
这个干吗用的? 再看看帮助 原来是用来设置运行域 和 设置是否加载安全策略文件的
当然使用方法是 var lc:LoaderContext
= new LoaderContext
(true);
var l:loader = new loader; l.load(new urlrequest(""),lc); 这样行吗? 一样不行
还要放一个 安全策略文件 放在对方服务器的根目录下面 名称为:crossdomain.xml 最好是这个名字 省得多写代码
内容为
<?xml version="1.0"?>
<cross-domain-policy>
<allow-access-from domain="
www.myserver.com
" />
</cross-domain-policy>
所以这种方式有个很大弊病 就是要在对方服务器上放这么一个文件 , 别人还肯给你放啊 ? 要不就是傻了
第2种方式 很自然的就是想到用代理方法 就是 用asp,php 等类似的程序去把这种图片读回来 然后传给flex
具体: 放一个如 getpic.asp 在服务器上 和myfalsh.swf 同一个目录
getpic.asp的代码为
<
%
function
reReader(url)
dim
http
set
http
=
server.CreateObject(
"
Microsoft.XMLHTTP
"
)
with
http
.Open
"
get
"
, url,
false
,
""
,
""
.Send
reReader
=
.ResponseBody
end
with
set
http
=
nothing
end function
dim
url
url
=
Request.QueryString(
"
url
"
)
response.Clear
Response.ContentType
=
"
image/gif
"
Response.BinaryWrite reReader(url)
response.End
%
>
myfalsh.swf 种的代码这样写
private
var _loader:Loader;
private
var _LoadUrl:
String
;
public
function
FileLoader(url:
String
){
_LoadUrl
=
url;
_loader
=
new
Loader();
_loader.contentLoaderInfo.addEventListener(Event.COMPLETE,OnLoadCompleateEvent);
_loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR,OnLoadIOErrorEvent);
}
//
加载
public
function
Load():void{
var req:URLRequest
=
new
URLRequest(_LoadUrl);
_loader.load(req);
}
public
function
get
content():DisplayObject{
return _loader.content;
}
private
function
OnLoadCompleateEvent(e:Event):void{
this.dispatchEvent(
new
Event(Event.COMPLETE));
}
private
function
OnLoadIOErrorEvent(e:IOErrorEvent):void{
Alert.show(
"
加载错误
"
);
//
this.dispatchEvent(
new
Event(IOErrorEvent.IO_ERROR));
}
调用方法
FileLoader(http://
www.myserver.com
/flex/myfalsh.swf?url=http://www.otherserver.com/img/1.jpg
);
搞定
分享到:
相关推荐
详细介绍了FLEX安全沙箱,便于大家开发FLEX时参考使用。
在Adobe Flash Player升级到9.0.124后,由于安全策略更改,原来Socket或XmlSocket的应用里的http方式加载安全策略的手段不能继续使用。...connectbysocket 是flex客户端 connectbysocket请放在tomcat下试验效果
NULL 博文链接:https://wuxiubing.iteye.com/blog/1354175
全面认识Flex安全沙箱 flex4发布后在IE中运行出现的安全沙箱问题。
flex 沙箱安全问题 remoteobject Error #2048
当a.com中的flash要访问b.com中的资源(如图片等)时,flex会提示安全沙箱错误!
解压缩后直接运行FlexSecurity.bat。解决flex安全沙箱问题。无需到Adobe的官网上去设置全局安全域。
电信设备-克服flex安全沙箱限制的视频像素信息采集存储的方法.zip
NULL 博文链接:https://honley.iteye.com/blog/1159473
FLASH PLAYER使用安全沙箱来定义各个FLASH应用程序可以访问的操作的范围,即他们可以访问哪些资源。 各个沙箱的所有内容由利益相关方安全控制,包括文件请求,本地数据存储(共享对象)以及特定域及其内容所使用的...
网上的方法很多,我看了好多,但是就是不管用,我的情况是,在程序没发布时,直接运行没错误,但是当发布时,访问就错了,提示SecurityError: Error #2048: 安全沙箱冲突:http://localhost:8086/index.swf 不能从 ...
flex for arcgis java tomcat环境不能跨域问题 网上找了很多都不能解决我的问题,后来看帮助文档,提供了思路,希望能帮助同样被问题困扰的人。
客户端说明 chat.mxml socket.connect("127.0.0.1",8888);...FLEX+Java,FLEX+C#,FLEX+C++ <br>把swf放到网站上去,会出现安全沙箱问题没有解决,如果你解决了请告诉我(email:feng0904@163.com),谢谢
flex使用Socket与C++服务器交互,服务器可以实现多线程,解决安全沙箱问题。
flex pdf导出功能,具有分页效果。解决自带save()方法中的安全沙箱问题。ps :crossdomain.xml也解决不了,最后换的另一种的方式
在项目开发过程中,经常会遇到文件上传下载的...但在flex中由于安全沙箱的原因flex程序不能直接访问本地文件,但是flex SDK中提供了FileReference和FileReferenceList两个类,可以通过这两个类来实现文件的上传下载。
flex开发中遇到安全沙箱问题需要的xml文件,放在服务端工程的根目录中。
chat 客户端代码 FLEX3 开发 ChatServer Delphi6 开发的服务端 Server java 开发的服务端 <br>其实可以做到FLEX+Delphi,FLEX+Java,FLEX+C#,FLEX+C++ <br>把swf放到网站上去,会出现安全沙箱问题没有解决...
Socket通信程序 AIR端用SocketServer创建端口监听 其他端用Socket连接AIR端的ip+端口 中间可能涉及沙箱安全问题,请自行baidu搜索 GroupSpecifier NetConnection NetGroup 这三个类建立p2p的连接进行通信