[ActionScript3.0] 使用FileReference处理单个文件的上载
package
{
import flash.display.SimpleButton;
import flash.display.Sprite;
import flash.errors.IllegalOperationError;
import flash.errors.MemoryError;
import flash.events.DataEvent;
import flash.events.Event;
import flash.events.MouseEvent;
import flash.events.ProgressEvent;
import flash.net.FileFilter;
import flash.net.FileReference;
import flash.net.URLRequest;
import flash.net.URLRequestMethod;
import flash.net.URLVariables;
import flash.text.TextField;
import flash.text.TextFieldAutoSize;
/**
* ...
* @author Frost.Yen
*/
public class UploadAS3 extends Sprite
{
private var _label:TextField;
private var _button:TextField;
private var _fileRefer:FileReference;
private var _request:URLRequest = new URLRequest("http://localhost/yanzimen/");
public function UploadAS3()
{
if(stage) init();
else addEventListener(Event.ADDED_TO_STAGE,init);
}
private function init(e:Event = null):void
{
_label = new TextField();
_label.text = "please select file";
_label.autoSize = TextFieldAutoSize.LEFT;
_label.background = true;
_label.width = 300;
_label.wordWrap = true;
_label.backgroundColor = 0xffffff;
_label.border = true;
_button = new TextField();
_button.text = "click here to select file";
_button.autoSize = TextFieldAutoSize.LEFT;
_button.selectable = false;
_button.background = true;
_button.backgroundColor = 0xE29966;
_button.border = true;
this.addChild(_label);
this.addChild(_button);
_button.x = 310; _fileRefer = new FileReference();
_button.addEventListener(MouseEvent.CLICK,toSelect);
_fileRefer.addEventListener(Event.SELECT,onSelect);
_fileRefer.addEventListener(Event.CANCEL,onCancel);
}
private function toSelect(e:MouseEvent):void
{
_fileRefer.browse(); //browse(typeFilter:Array=null) 使用 typeFilter 参数,可决定对话框显示哪些文件。
_button.removeEventListener(MouseEvent.CLICK,toSelect);
}
private function onProgress(e:ProgressEvent):void
{
_label.text = Number(Math.round(e.bytesLoaded / e.bytesTotal*100))+"%";
//label.text = e.bytesLoaded+"/"+e.bytesTotal;
}
private function onComplete(e:Event):void
{
_fileRefer.removeEventListener(Event.COMPLETE,onComplete);
_fileRefer.removeEventListener(ProgressEvent.PROGRESS,onProgress);
_button.addEventListener(MouseEvent.CLICK,toUpload);
_label.text = "load complete!";
_button.text = "upload";
}
private function toUpload(e:MouseEvent):void{
onUpLoad(_fileRefer);
}
private function onSelect(e:Event):void
{
trace("the name of the selected file:",(e.target as FileReference).name);
_label.text = "file name:"+(e.target as FileReference).name;
_fileRefer.addEventListener(Event.COMPLETE,onComplete);
_fileRefer.addEventListener(ProgressEvent.PROGRESS,onProgress);
_fileRefer.load();
}
private function onCancel(e:Event):void
{
trace("cancel to upload");
_button.addEventListener(MouseEvent.CLICK,toSelect);
}
/**
* 调用FileReference的实例方法upload()实现文件上传
* @param file
*/
private function onUpLoad(file:FileReference):void
{
_label.text = "file size"+Number(file.size/1024/1024).toFixed(2)+"M";
var variables:URLVariables = new URLVariables();
variables.fileName = file.name;
_request.data = variables;
_request.method = URLRequestMethod.POST;
file.addEventListener(ProgressEvent.PROGRESS, progressHandler);
file.addEventListener(Event.COMPLETE, completeHandler);
file.addEventListener(DataEvent.UPLOAD_COMPLETE_DATA,completeDataHandler);
try
{
file.upload(_request);
}
catch(error:Error)
{
trace(error.message);
} function progressHandler(e:ProgressEvent):void
{
_label.text = "uploading "+Math.round(100 * e.bytesLoaded / e.bytesTotal) + "%";
}
function completeHandler(e:Event):void
{
var file:FileReference = FileReference(e.target);
file.removeEventListener(ProgressEvent.PROGRESS, progressHandler);
file.removeEventListener(Event.COMPLETE, completeHandler);
_button.removeEventListener(MouseEvent.CLICK,toUpload);
_button.addEventListener(MouseEvent.CLICK,toSelect);
_label.text = "upload complete";
_button.text = "click here to select file";
}
function completeDataHandler(e:DataEvent):void
{
var file:FileReference = FileReference(e.target);
file.removeEventListener(DataEvent.UPLOAD_COMPLETE_DATA,completeHandler);
trace(e.data);//上传成功后,从后台返回的数据
}
}
/**
* FileFilter 类用于表示在调用 FileReference.browse() 方法、FileReferenceList.browse() 方法或调用 File、FileReference 或 FileReferenceList 对象的 browse 方法时显示的文件浏览对话框中显示用户系统上的哪些文件。
* @return
*/
private function getImageTypeFilter():FileFilter {
return new FileFilter("Images (*.jpg, *.jpeg, *.gif, *.png)", "*.jpg;*.jpeg;*.gif;*.png");
} private function getTextTypeFilter():FileFilter {
return new FileFilter("Text Files (*.txt, *.rtf)", "*.txt;*.rtf");
}
}
}
[ActionScript3.0] 使用FileReference处理单个文件的上载的更多相关文章
- 原创教程“ActionScript3.0游戏中的图像编程”開始连载啦!
经过近两年的不懈努力,笔者的原创教程"ActionScript3游戏中的图像编程"最终在今日划上了完美的句号!这其中记录着笔者多年来在游戏制作,尤其是其中图像处理方 ...
- spring mvc文件上传(单个文件上传|多个文件上传)
单个文件上传spring mvc 实现文件上传需要引入两个必须的jar包 1.所需jar包: commons-fileupload-1.3.1.jar ...
- Zip文件压缩(加密||非加密||压缩指定目录||压缩目录下的单个文件||根据路径压缩||根据流压缩)
1.写入Excel,并加密压缩.不保存文件 String dcxh = String.format("%03d", keyValue); String folderFileName ...
- JAVA代码实现下载单个文件,和下载打包文件
//下载单个文件调用方法 /** * response * imgPath 下载图片地址 * fileName 保存下载文件名称 * @date 2015年4月14日 下午 ...
- sruts2:单个文件上传,多个文件上传(属性驱动)
文件上传功能在Struts2中得到了很好的封装,主要使用fileUpload上传组件. 1. 单个文件上传 1.1 创建上传单个文件的JSP页面.显示提交结果的JSP页面 uploadTest1.js ...
- 【ActionScript】ActionScript3.0对舞台组件的增删改查
以一个样例来说明ActionScript3.0对舞台组件的增删改查 例如以下图: 在Flash执行的时候,通过脚本.斜向下生成text0-text9十个文本节点. 提供两个功能. 1.在右上角,用户输 ...
- Struts2 单个文件上传/多文件上传
1导入struts2-blank.war所有jar包:\struts-2.3.4\apps\struts2-blank.war 单个文件上传 upload.jsp <s:form action= ...
- rsyslog 读取单个文件测试
rsyslog 测试(rsyslog 必须yum 安装uat-web02:/root# rpm -qa | grep rsyslog rsyslog-8.21.0-1.el6.x86_64) //读取 ...
- 打印 上一主题 下一主题 利用cURL实现单个文件分多段同时下载,支持断点续传(修订版)
利用cURL实现单个文件分多段同时下载,支持断点续传(修订版) [复制链接] 摘自 http://bbs.chinaunix.net/thread-917952-1-1.html 在ubuntu下 ...
随机推荐
- centos 安装hue 4.0
Hue是Cloudera开源的一个Hadoop UI,由Cloudera Desktop演化而来.面向用户提供方便的UI用于平时的Hadoop操作中.Apache Ambari面向的是管理员,用于安装 ...
- 安装 ORACLE 11G出现Error Message:PRVF-7535
Error Message:PRVF-7535 : Proper architectureis not found on node "tsing" [Expected = &quo ...
- Thrift 实现 JAVA,PHP,C#,Python 互相通信
Thrift介绍 https://www.ibm.com/developerworks/cn/java/j-lo-apachethrift/index.html 首先需要下载 Thrift.exe ...
- Javascript变长参数和默认参数
/* javascript 变长参数 * 实参少于形参: 剩下的参数如果没有默认值,将解析为undefined * 实参多于形参: 剩下的实参可以通过 "实参对象"-argumen ...
- java中double和float精度丢失问题
为什么会出现这个问题呢,就这是java和其它计算机语言都会出现的问题,下面我们分析一下为什么会出现这个问题:float和double类型主要是为了科学计算和工程计算而设计的.他们执行二进制浮点运算,这 ...
- 基于swoole搭建聊天室程序
1. 创建websocket服务器 swoole从1.7.9版本开始, 内置了websocket服务器功能,我们只需几行简单的PHP代码,就可以创建出一个异步非阻塞多进程的WebSocket服务器. ...
- bean 的各个属性
http://www.springframework.org/schema/beans/spring-beans.xsd org.springframework.beans.factory.confi ...
- mysql下的常见问题处理
1. ubuntu中启动mysql,提示mysql access denied for user root@localhost 错误. 是因为还没有给添加的root账户配置密码信息. (1)停止mys ...
- 用 Servlet 进行上载的原理和实现
Servlet 是用 Java 编写的.协议和平台都独立的服务器端组件,使用请求/响应的模式,提供了一个基于 Java 的服务器解决方案.使用 Servlet 可以方便地处理在 HTML 页面表单中提 ...
- polymer入门例子-已过时
这个教程挺不错!:http://blog.csdn.net/renfufei/article/details/37040883 过时了,现在的版本已经为1.0了 一:创建APP结构 本教程会使用预先构 ...