用Flex+Java的组合方式做项目时,难免会遇到Flex用Request的方式与后台直接交互,比如上传文件,怎么做呢?
首先看看Flex端要用到的类:
1、URLRequest :与后台交互。flash.net包中。官方解释:URLRequest 类可捕获单个 HTTP 请求中的所有信息。
常用方法:URLRequest(url:String)。参数url即传统的符合标准的uri,
如:
var request:URLRequest=new URLRequest("servlets/UploadImgServlet?filename=a.jpg");
可是这个类怎么与后台交互呢?官方解释:
将 URLRequest 对象传递给 Loader、URLStream 和 URLLoader 类以及其他加载操作的 load()
方法以启动 URL 下载,并传递给 FileReference 类的 upload()
和 download()
方法。
那么就用到下面的类了。
2、FileReference:上传或下载文件的类(文中为上传的实现)。flash.net包中。官方解释:FileReference 类提供了在用户计算机和服务器之间上载和下载文件的方法。
用法:
var fr:FileReference=new FileReference();
fr.addEventListener(Event.SELECT,fileSelected);
fr.addEventListener(Event.COMPLETE,fileCompleted);
fr.addEventListener(ProgressEvent.PROGRESS,uploading);
在监听事件中利用FileReference的upload方法将URLRequest传到后台:
private function fileSelected(e:Event):void
{
request=new URLRequest("servlets/UploadImgServlet?filename=a.jpg");
fr.upload(request);
}
这样就传到后台,用Java接收吧。
怎么点击按钮弹出浏览文件窗口呢?FileReference还有一个方法browse(arr:Array)。这个Array里是什么呢?就是下面的东西:
3、FileFilter:用于弹出文件浏览窗口。同样在flash.net包中。官方解释:FileFilter 类用于指示在调用 FileReference.browse() 方法、FileReferenceList.browse() 方法或调用 File、FileReference 或 FileReferenceList 对象的 browse 方法时显示的文件浏览对话框中显示用户系统上的哪些文件。
用法:
var jpgFilter=new FileFilter("jpg Files","*.jpg");
var gifFilter=new FileFilter("gif Files","*.gif");
var arr:Array=new Array(jpgFilter,gifFilter);
在按钮的点击事件中:
fr.browse(arr);
OK了。