[ActionScript3.0] 使用FileReference处理单个文件的上载

  1 package
  2 {
  3     import flash.display.SimpleButton;
  4     import flash.display.Sprite;
  5     import flash.errors.IllegalOperationError;
  6     import flash.errors.MemoryError;
  7     import flash.events.DataEvent;
  8     import flash.events.Event;
  9     import flash.events.MouseEvent;
 10     import flash.events.ProgressEvent;
 11     import flash.net.FileFilter;
 12     import flash.net.FileReference;
 13     import flash.net.URLRequest;
 14     import flash.net.URLRequestMethod;
 15     import flash.net.URLVariables;
 16     import flash.text.TextField;
 17     import flash.text.TextFieldAutoSize;
 18     /**
 19      * ...
 20      * @author Frost.Yen
 21      */
 22     public class UploadAS3 extends Sprite
 23     {
 24         private var _label:TextField;
 25         private var _button:TextField;
 26         private var _fileRefer:FileReference;
 27         private var _request:URLRequest = new URLRequest("http://localhost/yanzimen/");
 28         public function UploadAS3()
 29         {
 30             if(stage) init();
 31             else addEventListener(Event.ADDED_TO_STAGE,init);
 32         }
 33         private function init(e:Event = null):void
 34         {
 35             _label = new TextField();
 36             _label.text = "please select file";
 37             _label.autoSize = TextFieldAutoSize.LEFT;
 38             _label.background = true;
 39             _label.width = 300;
 40             _label.wordWrap = true;
 41             _label.backgroundColor = 0xffffff;
 42             _label.border = true;
 43             _button = new TextField();
 44             _button.text = "click here to select file";
 45             _button.autoSize = TextFieldAutoSize.LEFT;
 46             _button.selectable = false;
 47             _button.background = true;
 48             _button.backgroundColor = 0xE29966;
 49             _button.border = true;
 50             this.addChild(_label);
 51             this.addChild(_button);
 52             _button.x = 310;
 53
 54             _fileRefer = new FileReference();
 55             _button.addEventListener(MouseEvent.CLICK,toSelect);
 56             _fileRefer.addEventListener(Event.SELECT,onSelect);
 57             _fileRefer.addEventListener(Event.CANCEL,onCancel);
 58         }
 59         private function toSelect(e:MouseEvent):void
 60         {
 61             _fileRefer.browse(); //browse(typeFilter:Array=null) 使用 typeFilter 参数,可决定对话框显示哪些文件。
 62             _button.removeEventListener(MouseEvent.CLICK,toSelect);
 63         }
 64         private function onProgress(e:ProgressEvent):void
 65         {
 66             _label.text = Number(Math.round(e.bytesLoaded / e.bytesTotal*100))+"%";
 67             //label.text = e.bytesLoaded+"/"+e.bytesTotal;
 68         }
 69         private function onComplete(e:Event):void
 70         {
 71             _fileRefer.removeEventListener(Event.COMPLETE,onComplete);
 72             _fileRefer.removeEventListener(ProgressEvent.PROGRESS,onProgress);
 73             _button.addEventListener(MouseEvent.CLICK,toUpload);
 74             _label.text = "load complete!";
 75             _button.text = "upload";
 76         }
 77         private function toUpload(e:MouseEvent):void{
 78             onUpLoad(_fileRefer);
 79         }
 80         private function onSelect(e:Event):void
 81         {
 82             trace("the name of the selected file:",(e.target as FileReference).name);
 83             _label.text = "file name:"+(e.target as FileReference).name;
 84             _fileRefer.addEventListener(Event.COMPLETE,onComplete);
 85             _fileRefer.addEventListener(ProgressEvent.PROGRESS,onProgress);
 86             _fileRefer.load();
 87         }
 88         private function onCancel(e:Event):void
 89         {
 90             trace("cancel to upload");
 91             _button.addEventListener(MouseEvent.CLICK,toSelect);
 92         }
 93         /**
 94          * 调用FileReference的实例方法upload()实现文件上传
 95          * @param    file
 96          */
 97         private function onUpLoad(file:FileReference):void
 98         {
 99             _label.text = "file size"+Number(file.size/1024/1024).toFixed(2)+"M";
100             var variables:URLVariables = new URLVariables();
101             variables.fileName = file.name;
102             _request.data = variables;
103             _request.method = URLRequestMethod.POST;
104             file.addEventListener(ProgressEvent.PROGRESS, progressHandler);
105             file.addEventListener(Event.COMPLETE, completeHandler);
106             file.addEventListener(DataEvent.UPLOAD_COMPLETE_DATA,completeDataHandler);
107             try
108             {
109                 file.upload(_request);
110             }
111             catch(error:Error)
112             {
113                 trace(error.message);
114             }
115
116             function progressHandler(e:ProgressEvent):void
117             {
118                 _label.text = "uploading "+Math.round(100 * e.bytesLoaded / e.bytesTotal) + "%";
119             }
120             function completeHandler(e:Event):void
121             {
122                 var file:FileReference = FileReference(e.target);
123                 file.removeEventListener(ProgressEvent.PROGRESS, progressHandler);
124                 file.removeEventListener(Event.COMPLETE, completeHandler);
125                 _button.removeEventListener(MouseEvent.CLICK,toUpload);
126                 _button.addEventListener(MouseEvent.CLICK,toSelect);
127                 _label.text = "upload complete";
128                 _button.text = "click here to select file";
129             }
130             function completeDataHandler(e:DataEvent):void
131             {
132                 var file:FileReference = FileReference(e.target);
133                 file.removeEventListener(DataEvent.UPLOAD_COMPLETE_DATA,completeHandler);
134                 trace(e.data);//上传成功后,从后台返回的数据
135             }
136         }
137         /**
138          * FileFilter 类用于表示在调用 FileReference.browse() 方法、FileReferenceList.browse() 方法或调用 File、FileReference 或 FileReferenceList 对象的 browse 方法时显示的文件浏览对话框中显示用户系统上的哪些文件。
139          * @return
140          */
141         private function getImageTypeFilter():FileFilter {
142             return new FileFilter("Images (*.jpg, *.jpeg, *.gif, *.png)", "*.jpg;*.jpeg;*.gif;*.png");
143         }
144
145         private function getTextTypeFilter():FileFilter {
146             return new FileFilter("Text Files (*.txt, *.rtf)", "*.txt;*.rtf");
147         }
148     }
149 }
时间: 2024-09-28 20:06:00

[ActionScript3.0] 使用FileReference处理单个文件的上载的相关文章

Struts2 单个文件上传/多文件上传

1导入struts2-blank.war所有jar包:\struts-2.3.4\apps\struts2-blank.war 单个文件上传 upload.jsp <s:form action="upload2.action" method="post" theme="simple" enctype="multipart/form-data"> <tr> <td id="more&quo

原创教程“ActionScript3.0游戏中的图像编程”开始连载啦!

        经过近两年的不懈努力,笔者的原创教程“ActionScript3游戏中的图像编程”终于在今日划上了完美的句号!这当中记录着笔者多年来在游戏制作,尤其是当中图像处理方面的经验心得.虽然使用的语言是目前可能正在没落的ActionScript3.0,但由于其中渗透着深刻的编程思想和实用技巧,因此其意义已经远远超越了ActionScript本身.您可以把从本书学到的知识轻松移植到其他支持图像编程的开发语言中(我也想换个语言重写,可惜精力不足).         此外,本书还包含了一些颜色

原创图书《ActionScript3.0游戏中的图像编程》开始连载啦!

        经过近两年的不懈努力,笔者的原创图书<ActionScript3游戏中的图像编程>终于在今日划上了完美的句号!这当中记录着笔者多年来在游戏制作,尤其是当中图像处理方面的经验心得.虽然使用的语言是目前可能正在没落的ActionScript3.0,但由于其中渗透着深刻的编程思想和实用技巧,因此其意义已经远远超越了ActionScript本身.您可以把从本书学到的知识轻松移植到其他支持图像编程的开发语言中(我也想换个语言重写,可惜精力不足).         此外,本书还包含了一些颜

打印 上一主题 下一主题 利用cURL实现单个文件分多段同时下载,支持断点续传(修订版)

  利用cURL实现单个文件分多段同时下载,支持断点续传(修订版) [复制链接] 摘自 http://bbs.chinaunix.net/thread-917952-1-1.html 在ubuntu下测试通过, 适合在支持多线程下载的站点下载文件 可以配合flashgot在firefox中使用 用法:./mycurl url [referedUrl] 第一个参数url是要下载的文件的地址,第二个参数referedUrl是指需要参照的网址(一般不需要,有些网站,比如华军需要此参数) 例如: ./m

Python:file/file-like对象方法详解【单个文件读写】

IO中读写文件操作方法汇总!----The_Third_Wave的学习笔记! 本文由@The_Third_Wave(Blog地址:http://blog.csdn.net/zhanh1218)原创.不定期更新,有错误请指正. Sina微博关注:@The_Third_Wave 如果这篇博文对您有帮助,为了好的网络环境,不建议转载,建议收藏!如果您一定要转载,请带上后缀和本文地址. class file(object) |  file(name[, mode[, buffering]]) -> fi

【ActionScript】ActionScript3.0对舞台组件的增删改查

以一个例子来说明ActionScript3.0对舞台组件的增删改查 如下图: 在Flash运行的时候,通过脚本,斜向下生成text0-text9十个文本节点. 提供两个功能, 1.在右上角,用户输入要删除的节点,点击"删除"之后,而删除相应的文本节点. 2.在下方,用户输入要移动的节点,然后输入合法的X与Y,则可以把节点移动到相应的地方. 一.基本布局 1.首先新建一个ActionScript3.0的Flash文件.之后如同<[ActionScript]ActionScript3

【ActionScript】ActionScript3.0的Helloworld

虽然说ActionScript2.0与ActionScript3.0熟练使用任意一门都可以,但是ActionScript3.0带来了许多新的开发感受.新时代的Flash已经开始向ActionScript3.0转型,许多新的Flash框架与Flash资料都是基于ActionScript3.0.所以还是两门双修好勒.ActionScript2.0的Helloworld已经在<[ActionScript]ActionScript2.0的Helloworld>(点击打开链接)中介绍过了.下面开始介绍A

单个文件复制

/**** * 复制单个文件 * @param oldPath String原文件路径 如:c:/fqf.txt * @param newPath String 复制后路径 如:f:/fqf.txt */ public void copyFile(String oldPath,String newPath) { try { int bytesum=0; int byteread=0; File oldfile=new File(oldPath); if(oldfile.exists()){//文

JAVA代码实现下载单个文件,和下载打包文件

//下载单个文件调用方法 /**     * response     * imgPath 下载图片地址    * fileName 保存下载文件名称    * @date 2015年4月14日 下午5:53:24     */     public static void download(HttpServletResponse response,String imgPath,String fileName){         OutputStream out=null;         Bu