[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下 ...
随机推荐
- js小例子之二级联动
联动原理 当用户点击省级的下拉选项,选择所在省,下一个下拉选项里的选项,则变成用户选择省下的所有市的信息,不会出现其它省市的信息. 省市数据 把省市数据,保存在js文件中,以json形式保存,以便读取 ...
- nSum “已知target再求和”类型题目总结:n-2重循环+left/right
Sum类的题目一般这样: input: nums[], target output: satisfied arrays/ lists/ number 拿到题目,首先分析: 1. 是几个数的sum 2. ...
- 7-linux-Centos7安装python3并与python2共存
转载自:https://www.cnblogs.com/JahanGu/p/7452527.html linux-Centos7安装python3并与python2共存 1.查看是否已经安装Pyt ...
- Java Thread系列(十)生产者消费者模式
Java Thread系列(十)生产者消费者模式 生产者消费者问题(producer-consumer problem),是一个多线程同步问题的经典案例.该问题描述了两个共亨固定大小缓冲区的线程-即所 ...
- 企业招聘:UX设计师需要满足他们哪些期望?
以下内容由Mockplus团队翻译整理,仅供学习交流,Mockplus是更快更简单的原型设计工具. 为了确定2017年最有价值的用户体验技能和特质,我特地参考了150多份工作要求.最后,得出了以下 ...
- 微交互:App成功的秘诀
以下内容由Mockplus团队翻译整理,仅供学习交流,Mockplus是更快更简单的原型设计工具. 最好的产品拥有两个很棒的特点:功能和细节.产品的功能可成功吸引到人们的注意力,而产品的细节则可留住你 ...
- 我读《大数据时代的IT架构设计》
架构设计是一门艺术,对架构的掌握要通过多看,多学,多交流,多积累,从实战架构上总能吸收到很好的营养,这边书虽然 (一).hadoop技术处理电信行业的上网日志 根据上网的url或未知url爬取内容,进 ...
- Basic4android v3.00 发布
这次发布的版本主要是增加了快速debuger. 在运行时,可以在IDE 里面随时修改代码,而不需要重新发布应用. 大大提高了开发效率. Basic4android v3.00 is released. ...
- [转]TCP的拥塞控制
1.引言 计算机网络中的带宽.交换结点中的缓存和处理机等,都是网络的资源.在某段时间,若对网络中某一资源的需求超过了该资源所能提供的可用部分,网络的性能就会变坏.这种情况就叫做拥塞. 拥塞控制就是防止 ...
- Linux网络(一)
[root@localhost ~]# ifconfig eth0 Link encap:Ethernet HWaddr :0C:::F6: inet addr:172.17.4.128 Bcast: ...