AS3 的安全性能进一步提升啊,已经不让我访问其他域下面的东西了。
官方的说法,需要得到服务器的授权,并且有 crossdomain.xml,不过我们当然不可能往别人的服务器里面放东西啊(至少我的水平不行)!
经过和Harry的讨论,因为PHP没有跨域这个概念(需要服务器允许),所以就可以通过PHP来中转,实现跨域访问。(ASP,JSP也类似,这里就不谈了,因为俺不会
)
由于今天晚上还要上课,所以就先草草的写一下大概思路。
这个东西目前只能调用 JPG 文件,PHP服务器端需GD库。
其他东西以后有时间在搞吧。
PHP端:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | $imgPath = $_POST['url']; function imageCreateFromJpegEx($file) { $data = file_get_contents($file); $im = @imagecreatefromstring($data); $i = 0; while (!$im) { $data = substr_replace($data, "", -3, -2); $im = @imagecreatefromstring($data); } return $im; } $im = imageCreateFromJpegEx($imgPath); imagejpeg( $im ); |
Flash调用方法:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | function LoadImg(e:MouseEvent):void { //imgMovieClip为需要加载图片的MovieClip,目前好像不能用内置的组件UILoader来读取... var imgURLRequest:URLRequest = new URLRequest('get_images.php'); var imgURLLoader:URLLoader = new URLLoader(imgURLRequest); var imgLoader:Loader = new Loader(); var imgURL:String = URL_Input.text; var imgURLVariable:URLVariables = new URLVariables(); // imgURLVariable.url = imgURL; //imgURL即为需要跨域访问图片的URL // imgURLRequest.data = imgURLVariable; imgURLRequest.method = URLRequestMethod.POST; //URLRequestMethod 要用POST // imgLoader.load(imgURLRequest); imgMovieClip.addChild(imgLoader); } |
这里看个效果,哈哈。
不错,呵呵,有了你这个代理,以后引用那些没有装跨越许可的图片的时候就用你这个了
p.s.前面的话纯属玩笑,呵呵,这样你一个月的流量就要猛窜上去咯
首先谢谢你踩我BLOG哈哈
忽忽,茄子的朋友都是AS3高手啊,得加油了我
关于跨域加载图片,好象有一个说法是:
无论网站是否放置策略文件,flash都可以加载到http协议下的图片,
但如果没有crossdomain文件的话,flash就没有操作图片数据的权限. 没认真验证过,不知道是否正确.
嗯 很不错的效果!
支持一个哈!
哈哈,太好了,yupoo那帮懒人,总是忘记在新的照片域里加crossdomain,我搞的那个yupoo flash browser常搞不到图片,现在就用你这个做代理啦,哈哈,现在我的程序里只要捕获到砂箱异常,就到你这里中转,嘿嘿
其实俺是超菜的……
哈,现在不知道有没有按流量给钱的广告商啊,哈哈。
是的,可以载入和看到,如果想mask,或者按照bitmap操作,就出现问题了
代码蛮有用 不过传参数的地方似乎需要换另一种方式才能成功
var imgURLVariable:URLVariables = new URLVariables("url="+imgURL);
url为POST的参数
@A3S#2403
不对吧,AS3中,POST和GET的数据都是加载URLRequest对象中的,不是加到URLVariable中的。