最近在开发过程遇到一些小问题,是以前没怎么弄过的,过来这里记录一下:
1:flex安全沙箱问题。
问题描述:flex在flashplay9.0后增加新的功能:安全沙箱。
一般在发布服务时,flex客户端有一个默认的安全域:如:http://localhost:7001/,但如果你在服务中调用http://127.0.0.1:7001/时就会报安全沙箱冲突的错误,虽然两地址可能在本地代理中,是同一服务地址,但还是属于夸域。
解决办法,有如下几种:
1)在服务器根目录下,放入如下文件:crossdomain.xml,测试访问:http://127.0.0.1:7001/crossdomain.xml,这个对于tomcat是直接可以放入root目录,但有web服务器,可能得设置一下,如建立一个'/'的服务。这样flex客户端在跨域时,会先去查看crossdomain.xml里的相关规则。
2)手动加载crossdomain.xml:
Security.loadPolicyFile(“http://127.0.0.1:7001/gmap/crossdomain.xml”);
3)中转服务,如将跨哉操作改到jsp文件或后台服务端里进行。
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE cross-domain-policy SYSTEM "http://www.macromedia.com/xml/dtds/cross-domain-policy.dtd" > <cross-domain-policy> <site-control permitted-cross-domain-policies="all" /> <allow-access-from domain="*" /> <allow-http-request-headers-from domain="*" headers="*"/> </cross-domain-policy>
2.flex的上传功能:
private function upload(): void { var docFilter:FileFilter = new FileFilter("Documents", "*.pdf;*.rar;*.txt;*.jpg;*.gif;*.png;*.xls;*..xlsx;*.doc;*.docx"); fileUpLoad.addEventListener(Event.SELECT,selectedHandler); fileUpLoad.addEventListener(Event.COMPLETE,CompletedHandler); fileUpLoad.addEventListener(ProgressEvent.PROGRESS,progressHandler); fileUpLoad.addEventListener(IOErrorEvent.IO_ERROR,ioErrorHandler); fileUpLoad.browse([docFilter]); } private function selectedHandler(e:Event):void { fileUpLoad.removeEventListener(Event.SELECT,selectedHandler); Alert.show("上传 " + fileUpLoad.name + " (共 "+Math.round(fileUpLoad.size/1024)+"KB)?", "确认上传",Alert.YES|Alert.NO, null,proceedWithUpload); } private function proceedWithUpload(e:CloseEvent): void { if (e.detail == Alert.YES) { var request:URLRequest = new URLRequest("../fileUpload.do"); try { fileUpLoad.upload(request); this.loadbar.visible = true; } catch (error:Error) { cancelUpload(); this.loadbar.visible = false; Alert.show("上传失败","错误"); } } if(e.detail == Alert.NO){ cancelUpload(); } } private function progressHandler(e:ProgressEvent):void { lblProgress.text = " 已完成 " + e.bytesLoaded + " 字节,共 " + e.bytesTotal + " 字节"; var proc: uint = e.bytesLoaded / e.bytesTotal * 100; uploadbar.setProgress(proc, 100); uploadbar.label= "当前进度: " + " " + proc + "%"; } private function CompletedHandler(e:Event):void { var reference:FileReference=e.target as FileReference; this.loadbar.visible = false; cancelUpload(); } private function ioErrorHandler(e:IOErrorEvent):void { this.loadbar.visible = false; cancelUpload(); Alert.show(e.toString()); } <mx:ProgressBar id="uploadbar" height="80%" labelPlacement="bottom" themeColor="#F20D7A" minimum="0" visible="true" maximum="100" label="上传进度: 0%" direction="right" mode="manual" width="200"/>
CheckFileExist(uploadPath, true); private int maxPostSize = 10 * 1024 * 1024; response.setContentType("text/html; charset=UTF-8"); DiskFileItemFactory factory = new DiskFileItemFactory(); factory.setSizeThreshold(1024 * 4); ServletFileUpload upload = new ServletFileUpload(factory); upload.setFileSizeMax(maxPostSize); List<?> fileItems = null; try { fileItems = upload.parseRequest(request); Iterator<?> iter = fileItems.iterator(); while (iter.hasNext()) { FileItem item = (FileItem) iter.next(); logger.info(item.toString()); if (!item.isFormField()) { String filePath = uploadPath + item.getName(); if (CheckFileExist(filePath, false)) { try { item.write(new File(filePath)); } catch (Exception ex) { logger.info(ex.getMessage()); message = "上传失败!|"+ex.getMessage(); } }else{ message = "文件已存在!"; } } } } catch (FileUploadException ex1) { logger.info("FileUploadException->" + ex1.getMessage()); message = "上传失败!|"+ex1.getMessage(); }
3.文件下载
private function downLoad():void { var downloadURL:URLRequest = new URLRequest("../fileDownload.do"); downloadURL.method=URLRequestMethod.POST; var params:URLVariables = new URLVariables; params.fileName = filename.label; downloadURL.data=params.toString(); fileDownLoad.download(downloadURL, filename.label); fileDownLoad.addEventListener(Event.COMPLETE, completeHandler); fileDownLoad.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler); fileDownLoad.addEventListener(Event.CANCEL, cancelHandler); } private function cancelHandler(event:Event = null):void { fileDownLoad.removeEventListener(Event.CANCEL, cancelHandler); fileDownLoad.removeEventListener(Event.COMPLETE, completeHandler); fileDownLoad.removeEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler); } private function completeHandler(event:Event):void { cancelHandler(); Alert.show("下载成功!","提示"); } private function ioErrorHandler(e:IOErrorEvent):void { cancelHandler(); Alert.show(e.toString()); }
OutputStream out = response.getOutputStream(); InputStream in = new BufferedInputStream(new FileInputStream(uploadPath + fileName)); fileName = new String(fileName.getBytes(), "utf-8"); response.setCharacterEncoding("utf-8"); response.setContentType("application/octet-stream;charset=utf-8"); response.setHeader("Content-Disposition", "attachment; filename=\"" + fileName + ";"); int len = 0; byte[] buf = new byte[512]; try{ while ((len = in.read(buf)) > 0) { out.write(buf, 0, len); } }finally{ out.close(); in.close(); }
相关推荐
这个小例子是使用Java作为服务端、Flex做前台,对一个xml文件的读取和写入。 环境:MyEclipse6.0.1+Flex3插件版,jdk1.6,tomcat6.0,dom4j1.6.1,lcds.war, 使用技术:1.Java+flex,及其对象的转换。 2.Java方面...
java+flex原码 flex java 原码flex java 原码flex java 原码flex java 原码
java+flex4 使用的是BlazeDS方式中得 remoting方式与JAVA交互 由于没有美工 UI十分丑陋望学者见谅 目前功能只实现了这些 flex 根据状态切换改变页面显示和页面跳转 1.登陆 2.商品管理 (商品的 增删改查 ) 双击...
笨功能是基于Java+flex实现的WEB程序的聊天功能!可实现群聊、私聊!和多房间!包括两个文件!一个是java服务器端的文件另一个是flex的源文件,方便修改
FlexBuilder与MyEclipse整合心得(java+flex) java flex
Java+Flex在线电影网站代码.zip java网站 flex播放视频
java+flex基于socket的聊天案例 很简单的例子,主要介绍socket在java和flex之间的应用。
java+flex实现的摄像头图像捕捉,原理很简单就是设置摄像头的监听器监听摄像头活动
Java编写的坦克大战经典小游戏 java+flex 编写
这个是MyEclips6.6+Flex 3.0 的工程搭建。这是个将Java和Flex整合在一个完整的工程里的一个环境搭建手册。步骤清晰。
一个完整的flex与java整合通信实例源码 采用了blazeds技术与java通信
里面含有 blazeds.war包 以及相关教程,和一个 flex3跟struts2.16+hibernate3.25+spring2.5组合的实例和相应数据库,不过里面没有jar包,如有需要,可以向我要 QQ 826785300
文档+源码 关键是版本问题,如果参照文档报404错误 myeclipse6.0+flex2.0.1+tomcat6.0+jdk1.6
我也从为此苦恼,现在上传给大家分享, 只是忘了写helloWord,自己加吧,网上有介绍
自己整理的flex 和 java 通过lcds结合的项目,用的是mysql数据库,环境是myeclipse 包括对数据库的操作,希望对急需深入了解flex的朋友有所帮助
1. Oracle 存储过程分页 2. Java 调用 Oracle 存储过程 3. Flex 分页
flex 数据库操作 romotingobject 连接java后台文件 与数据库进行交互
本文详细介绍了,将Flahbuilder集成到Myeclipse中,Myeclipse中Jdk和Tomcat环境配置,通过jdbc连接数据库,Flex与java通讯通过blazeds方式等内容
Flex LCDS JAVA 入门学习教程
。。。