安全沙箱问题

在Flex中不能用File文件进行ip间的上传和下载,这样会导致安全沙箱的问题,从网上搜到很多,都是没用的,以下这个方法我也没试过,汗!!据说可以绕过安全沙箱的问题:

 

绕开安全沙箱跨域调用Swf中的方法:

http://www.flashas.net/html/flashas/ASxiaojiqiao/20071105/2396.html

 

http://www.flashas.net/html/flashas/aschuji/20071106/2397.html

 

 

而我在实现的时候,2种方法可以实现下载,

1,

private var downloadURL:URLRequest;

private var file:FileReference;

    

public function downLoadFiles():void {

 

 

   encodeURI(strExcelName);

 

           downloadURL = new  URLRequest(url);

 

           file = new FileReference();

           file.download(downloadURL);

 

}

 

这种方法容易导致安全沙箱的问题

 

2,

 

private var downloadURL:URLRequest;

private var file:FileReference;

    

public function downLoadFiles():void {

 

 

      encodeURI(strExcelName);

 

           downloadURL = new  URLRequest(url);

 

           navigateToURL(downloadURL, "_blank");

 

}

这种方法是弹出一个新的窗口,然后进行下载,从而绕过了安全沙箱的问题。
navigateToURL() 的说明:
navigateToURL() 可以用来 打开一个新的浏览器窗口,也可以用来flex和js之间的通信。比如:
         打开一个 新窗口:
var url:URLRequest = new URLRequest( http://blog.csdn.net );
navigateToURL(url, _blank);
这个函数也可以用来执行js,例如:
var url:URLRequest = new URLRequest(“javascript:window.close()”); 或者:
var urlLURLRequest = new URLRequest(“javascript:myFun(para1…paran)”)
myFun()函数是html页面的script部分定义的,函数参数一定要有引号!
navigateToURL(url, _self);
也可以用来发送email:
var urlURLRequest = new URLRequest( mailto:zoushun@hotmail.com );
navigateToURL(url, _blank);
From:
http://hi.baidu.com/j2eedoc/blog/item/8aaeb4645e766af6f73654e6.html
当navigateToURL()读取中文时,容易出现乱码,这里以java的servlet做为后台,解决方法:
flex做前端,servlet做后端
在flex中navigatetourl到一个servlet,但是url中如果包含中文,servlet获取得到乱码。解决如下:

在flex代码中:
naviageToURL(encodeURI(url));

在servlet中:

String para1=new String(request.getParameter("para1").getBytes("iso-8859-1"),"UTF-8");

或者:
String para1=new String(flex.messaging.util.URLDecoder.decode(request.getParameter("para1"), "iso8859-1").getBytes("iso8859-1"),"utf-8");
From:
http://lyh7609.javaeye.com/blog/362246
说明:
在上面的的解决方法中,只是从flex到servlet是中文的,如果是下载文件,则浏览器的路径还是有乱码的,这里注意,还要把tomcat也转成中文UTF-8格式。同时,去掉servlet中转换的,这样,只是从Flex到tomcat,其中,三则的关系是从Flex(转)-->tomcat(转)-->servlet(转),这样就又转回乱码了,要是下载,则去掉servlet的,要是到java的,就去掉tomcat的。

让Tomcat支持中文路径名和中文文件名

Tomcat是Java开发者使用得较多的一个Web服务器,因为它占用资源小,运行速度快等特点,深受Java Web程序员的喜爱。不过,在使用中,由于Java中的中文问题的存在,如果不经过配置,在WEB程序中,不能直接支持具有中文文件名的文件的下载,这为 Java Web程序的开发带来一定的不便。本文拟介绍一种手段,解决这个问题。

   解决问题的核心在于修改Tomcat的配置,在Server.xml文件中添加一个名为URIEncoding的属性,它用于对HTTP请求中的get方 法传过来的URL进行编码。如果直接从Apache站点中下载Tomcat,无论是安装版的exe文件,还是解压缩的ZIP文件,内置的对于get协议中 的URL编码都是ISO-8859-1,这个字符集不能直接支持中文等双字节的信息,而中文文件的下载链接恰恰是通过get协议进行的。以下说明修改 Tomcat安装目录中的config文件夹中的server.xml文件的方法。

   打开config/server.xml文件,如果没有修改过这个文件,应该可以在其中找到如下代码:
  
   <Connector port="8080"  protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" />
  
   这段代码规定了Tomcat监听HTTP请求的端口号等信息,可以在这里添加一个属性:URIEncoding,将该属性值设置为UTF-8,即可让Tomcat不再以ISO-8859-1的编码处理get请求。更改后的代码如下所示(红色部分为新添加的代码):
 
  <Connector port="8080"
             URIEncoding="utf-8"
             protocol="HTTP/1.1"
             connectionTimeout="20000"
             redirectPort="8443" />
 
  下面,我们准备测试一下更改后的效果。

   最为简单的测试方法就是让Tomcat自己列出WEB程序中的目录和文件,默认情况下,Tomcat不会直接列出WEB程序目录中的文件和文件夹,但是, 我们可以修改位于安装目录中的config文件夹中的web.xml,使其能够支持自动列出WEB程序中的目录和文件。
   在config/web.xml文件中找到如下代码:
  
    <servlet>
    <servlet-name>default</servlet-name>
    <servlet-class>org.apache.catalina.servlets.DefaultServlet</servlet-class>
    <init-param>
      <param-name>debug</param-name>
      <param-value>0</param-value>
    </init-param>
    <init-param>
      <param-name>listings</param-name>
      <param-value>false</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
  </servlet>
  
   将上面的代码中标为红色的部分改为如下内容:
 
   <init-param>
      <param-name>listings</param-name>
      <param-value>true</param-value>
   </init-param>
  

   即将参数listings的属性改为true,就可让Tomcat自动列出某个WEB程序目录中的文件和文件夹。

   现在,我们的设置已经完成,将修改的文件保存后,就可以启动Tomcat进行测验了,当然,如果Tomcat正在运行,则需要重新启动,以便配置生效。

   现在,可以在Tomcat安装目录中的webapps目录中建立一个名为cntest的文件夹,作为测试的web程序的上下文路径(注意:对于WEB程序 的上下文路径,请不要使用中文)。请在cntest中添加一些中文目录和文件,然后在浏览器中打开该WEB程序, 如,http://localhost:8080/cntest,测验一下效果吧。当然,也可以在JSP或HTML文件中使用那些包含中文的文件夹或文件 名的超级链接。

   说明:以上修改均使用Tomcat5.5做的测试,在5.5以上都应该可以,至于5.0和4.x,我没有实验过,不过对于5.0应该也是可以的,但4.x不能保证(4.x在处理HTTP的get和post方法和5.x不大一样)。

 

From:

http://hdwangyi.javaeye.com/blog/107709

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值