`
wangleifire
  • 浏览: 509053 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

关于flex跨域读取一个图片

    博客分类:
  • FLEX
阅读更多

偌大一个中国 那么多技术人员

google  baidu 居然就没有一个像样的文章来谈论这个问题  

天下文章一大抄 好多都是你抄我 我抄你 也不晓得对还是不对 反正抄了再说 给自己的blog或者 网站增加的技术含量  可叹

今天不谈理论  只说具体一个事例  而且要说就要说细致点   不像有些文章说的不清不楚 看了就让人吐血

关于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跨域访问问题的关键在于理解同源策略,合理利用CORS、策略文件或代理服务,并在服务器端和客户端进行相应的配置。正确配置后,Flex应用就能安全地跨域获取和发送数据了。在实际项目中,应根据具体...

    tomcat跨域解决方案

    同源策略是为了保护用户数据安全而设立的一种机制,它规定一个网页中的脚本只能读取来自同一来源的数据。当遇到需要跨域访问的需求时,开发者必须采取相应的措施来解决这一问题。 对于使用Apache Tomcat服务器的...

    Flex 上传图片 预览 加载图片到内存

    在HTML表单中,我们可以添加一个`&lt;input type="file"&gt;`元素,当用户选择文件后,通过JavaScript调用`FileReference.load()`方法读取文件内容。 2. **预览图片**: - 在`FileReference`的`load`事件触发后,会触发`...

    flex 嵌入完美Iframe

    1. 创建一个SWFLoader组件:Flex提供了SWFLoader组件,可以加载SWF或其他内容,包括HTML。我们可以通过设置其`source`属性来指定要加载的HTML页面URL。 2. 处理跨域问题:由于安全限制,如果HTML页面不在同一域下,...

    flex 和 js 交互

    1. **跨域策略文件**:由于Flash Player的安全限制,Flex应用在与JavaScript交互前需要加载一个跨域策略文件,允许它与不同源的JavaScript进行通信。这个文件通常命名为crossdomain.xml,放置在服务器的根目录下。 ...

    flex 开发实例 用于flex 沙箱的控制

    Flex沙箱是Flex应用程序运行时的一个核心组件,它模仿了Adobe Flash Player的安全模型。沙箱主要分为两种类型:本地沙箱和网络沙箱。本地沙箱允许应用程序访问用户的本地文件系统和硬件设备,而网络沙箱则限制了这些...

    flex (eclipse)开发配置手册

    《Flex(Eclipse)开发配置手册》是一份详细介绍如何在Eclipse环境中进行Flex应用程序开发的指导文档。Flex是一种用于创建富互联网应用(RIA)的技术,它基于ActionScript和MXML,由Adobe公司提供。这份手册将帮助...

    Flex完全自学手册

    通过这个“Flex完全自学手册(PPT)”,你将能够逐步掌握这些关键知识点,并通过实例和练习深化理解,最终成为一位熟练的Flex开发者。在学习过程中,建议结合实际动手实践,以加深对理论知识的理解和应用。

    Flex AcrionScript 和 JavaScript 通讯

    Flex ActionScript与JavaScript之间的通信是Web开发中的一个重要概念,它允许在Adobe Flash Player中的Flex应用程序与HTML页面上的JavaScript代码之间交换数据和控制交互。这种通信机制对于创建富互联网应用程序...

    flex socket开发总结

    Flex SDK提供了一个名为`flash.net.Socket`的类,它允许我们创建客户端Socket连接,以便与服务器进行双向通信。通过这个API,我们可以读取和写入字节数据,实现低级别的网络通信。 2. 连接服务器 创建Socket对象后...

    Flex_API.zip_flex

    Flex API 是一个与 Adobe Flex 技术相关的API接口文档,主要涵盖了如何在Flex应用程序中进行交互和数据操作的详细信息。Adobe Flex是一个用于构建富互联网应用程序(RIA)的开源框架,它基于ActionScript编程语言和...

    Flex与java通讯

    Flex与Java之间的通信是开发富互联网应用程序(RIA)时经常遇到的一个重要技术问题。Flex作为Adobe推出的基于ActionScript的开放源代码框架,主要用于构建交互性强的用户界面,而Java则是一种广泛使用的后端开发语言...

    flex本地安全域设置

    它可能包含了设置本地安全策略文件的命令,通过这种方式,我们可以为Flex应用定义一个本地安全域,允许其访问必要的本地资源,而无需改变用户的全局Flash Player设置。 4. **运行FlexSecurity.bat**:在解压文件后...

    flex加载flashpaper示例

    创建一个新的Flex项目,并在src目录下组织你的源代码。 2. **导入必要的库**:在ActionScript类文件或.mxml文件中,导入SWFLoader组件所需的库。例如: ```actionscript import mx.controls.SWFLoader; ``` 3. ...

    非常不错的Flex播放器

    Microphone类是ActionScript 3.0中的一个关键组件,它允许用户访问计算机的内置麦克风,并实现实时音频捕捉。通过Microphone对象,开发者可以创建各种与声音相关的应用,例如语音聊天、在线录音或音频处理程序。在...

    Flex与JS交互

    ActionScript是Flex的核心编程语言,它是基于ECMAScript的一个方言,主要用于创建Flash内容和Flex应用程序。而JavaScript是一种广泛用于客户端Web开发的脚本语言,它可以操作DOM,处理用户事件,执行Ajax请求,提供...

    flex iframe js

    在IT行业中,`flex iframe js`是一个特定的技术领域,它涉及到使用JavaScript与Adobe Flex应用程序进行交互,特别是通过IFrame(内联框架)实现。本文将深入探讨这一技术,包括其工作原理、应用场景以及如何实现AS...

    flex-iframe-1.4.1.zip

    当我们谈论"flex-iframe-1.4.1.zip"时,我们关注的是一个专门优化iframe使用体验的库,Flex-Iframe 1.4.1。这个版本不仅提供了基本的iframe功能,还考虑了向下兼容性,确保在不同版本的浏览器上都能顺畅运行。 Flex...

    flex整合JSP

    在IT行业中,Flex是一种基于Adobe Flash技术的开源框架,用于构建富互联网应用程序(RIA)。它提供了丰富的用户界面组件和强大的数据通信能力,尤其适合创建动态、交互性强的Web应用。而JSP(JavaServer Pages)是...

    flex安全机制详解

    沙箱机制将不同的SWF文件隔离在各自的“沙箱”内,这样即使其中一个SWF文件被攻击者利用,也不会影响到其他SWF文件。 ##### 本地播放 在本地环境中播放SWF文件时,Flash Player默认情况下不会允许该SWF文件访问...

Global site tag (gtag.js) - Google Analytics