|
1 [Bindable]
2 private var stateText:String = "请选择一个文件上传";
3 //通过调用file对象的方法来完成上传和下载功能
4 private var file:FileReference = new FileReference();
复制代码上传文件通常涉及到的有选择文件、上传文件以及上传完成这些最基本的处理过程。OK,下面我们就以这三个过程为例来看看Flex是怎么来完成文件的上传功能。首先为这三个功能点分别添加监听事件处理函数,在程序加载时调用:1 private function initApp():void
2 {
3 file.addEventListener(Event.SELECT,onSelected);
4 file.addEventListener(Event.COMPLETE,onCompleted);
5 file.addEventListener(ProgressEvent.PROGRESS,onProgress);
6 }
复制代码这三个事件处理函数的详细定义如下(其中的stateText为String的变量,用于显示文件上传状态提示):1 internal function onSelected(evt:Event):void
2 {
3 stateText = "选择了文件" + file.name;
4 }
5
6 internal function onCompleted(evt:Event):void
7 {
8 stateText = "上传完毕!";
9 }
10
11 internal function onProgress(evtrogressEvent):void
12 {
13 stateText = "已上传 " + Math.round(100 * evt.bytesLoaded / evt.bytesTotal) + "%";
14 }
复制代码到这里客户端就只差一步了,那就是完成发起上传请求的方法,实际上就是通过URLRequest对象创建一个与服务端的连接,然后直接调用FielReference类的upload()方法就可完成该功能,详细如下代码定义:1 /**
2 * 调用FileReference的实例方法upload()实现文件上传
3 * */
4 internal function onUpLoad():void
5 {
6 if(file.size > 0)
7 {
8 stateText = "正在上传文件:" + file.name;
9 }
10 var request:URLRequest = new URLRequest();
11 request.url="http://localhost/Web/UpLoadHandler.aspx";
12 file.upload(request);
13 }
复制代码写好了upload方法,现在就是调用他了,通过按扭的click事件直接调用就可以,另外调用file.browse()方法则实现选择文件的功能,如下mxml代码描述:1 <mx:TextInput x="10" y="57" id="txtFile" text="{stateText}" width="229"/>
2 <mx:Button x="247" y="57" label="选择" fontWeight="normal" click="{file.browse()}"/>
3 <mx:Button x="29" y="111" label="上传文件" width="111" fontWeight="normal" click="onUpLoad()"/>
1 public class UpLoadHandler : IHttpHandler
2 {
3 //文件上传目录
4 private string uploadFolder = "UpLoad";
5
6 public void ProcessRequest(HttpContext context)
7 {
8 context.Response.ContentType = "text/plain";
9
10 HttpFileCollection files = context.Request.Files;
11 if (files.Count > 0)
12 {
13 string path = context.Server.MapPath(uploadFolder);
14 HttpPostedFile file = files[0];
15
16 if (file != null && file.ContentLength > 0)
17 {
18 string savePath = path + "/" + context.Request.Form["fileName"];
19 file.SaveAs(savePath);
20 }
21 }
22 else
23 {
24 context.Response.Write("参数错误");
25 context.Response.End();
26 }
27 }
28
29 public bool IsReusable
30 {
31 get
32 {
33 return false;
34 }
35 }
36 }
|站点统计|关于我们|手机版|法律顾问:熊安律师|爱宜都网 ( 鄂ICP备14016224号-1 ) ( 鄂公网安备42058102000002号 )
GMT+8, 2024-5-21 00:04 , Processed in 0.023725 second(s), 8 queries , Memcache On.
Powered by Discuz! X3.2
© 2001-2013 Comsenz Inc.