关于跳过flex的sandbox实现访问本地资源的解决方案
需求:
开发flex的过程中遇到一个问题。flex的项目需要在客服端显示一个局域网类的一台服务器的文件目录结构,并且要能够点击访问。
预想:
flex在以前的版本里面没有file类,这个可以用java代码在后台进行处理,生成xml文件。前台的flex到相应目录下面读取数据即可。
困难:
flash被下载到客服端,有严格的安全限制。如果flash能控制你的系统,那这个计算机世界太恐怖了。
flash的sandbox的内容很多,可以到网上去搜搜看。
现在问题是在客服端,点击访问本地资源的链接时,弹出flash错误:不能访问本地资源,只有信任的程序才能访问本地资源
解决方案:
这个问题很怪,在IE上面是能点击开来的,IE会用本地的打开方式来打开相应的文件,略过不提。
还要flex没有把路都堵死了,flex可以调用javascript代码(flash.external.ExternalInterface)。
在firefox里面有个插件叫做Noscript,可以允许js代码访问本地资源。还有一个插件叫locallink可以使用file://
而在chrome里面现在暂时还没有这样的功能,但是chrome有个插件叫IE tab。
所以下面就是我的解决方案:
IE: window.open("file://*");
firefox:安装Noscript,配置信任“your site”,"file://",同样是window.open("file://*");
chrome:待续
相关代码如下:
flex URLUtil:
import flash.external.ExternalInterface;
public class URLUtil {
protected static const WINDOW_OPEN_FUNCTION : String = "window.open";
public static function openWindow(url : String, window : String = "_blank", features : String = "") : void {
var str:String= dealUrl(url);
ExternalInterface.call(WINDOW_OPEN_FUNCTION, "file:///"+str, window, features);
}
private static function dealUrl(str:String):String{
var string:String=str.substr(2);
var array:Array=string.split("\\");
var url:String="//";
for(var i:int=0;i<array.length;i++){
if(array[i] == ""){
url=url+array[i];
}else{
url=url+array[i]+"/";}
}
return url;
}
}
还有一个js 方法不要忘记了
获得user.agent。不同的浏览器不同的处理方法。
相关文档:
Flex Chart 虽然有提供完整的试用功能
不过编译完成的图表会加上水印
“Flex Data Visualization Trial”的字样。
既然是 AS,那事情就简单了
只要在 Flex Project 內加上以下 Class:
一定要创建mx.charts.chartClasses,覆盖FLEX自带的ChartLicenseHandler
package mx.charts.chartClasses { ......
转自 http://www.51as.com/fms/fms3jiaochen.html
连接到FMS服务器(Flash/Flex两种实现) - 第1篇:Connection
一 、FMS应该做些什么
本文中所使用到的FMS是非常简单的,主要就就是建立一个FMS应用,方法很简单。找到你安装FMS的目录你会发现里面有一个appliations的目录。对的 ......
flex多文件上传工具(自用)
JAVA类
package com.shine.framework.flexUpload;
import java.io.File;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Iterator;
import java.util.List;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet; ......
在Flex下设置页面浏览器标题Title工有两种方式:
1(推荐此方法).利用BrowserManager类设置Title:
BrowserManager.getInstance().setTitle("***信息系统");
可以将上面一行代码写在系统的初始化函数中
2.在Apllicaaction标签下设置pageTitle属性:
<mx:Application xmlns:mx="http://www.adobe.com/ ......
用的是MySQL数据库。
1,建一个userdb库,再建userinfo表,字段:id(int),username(varchar),password(varchar)。
create database userdb;
use userdb;
create table userinfo(
id int(10) not null auto_increment,
username varchar(20),
password varchar(20),
primary key(id));
2,DBConnection.jav ......