现在相片比较大,好几M,直接上传比较麻烦

package  {import com.adobe.images.JPGEncoder;import com.adobe.images.PNGEncoder;import flash.display.Bitmap;import flash.display.BitmapData;import flash.display.DisplayObject;import flash.display.DisplayObjectContainer;import flash.display.Loader;import flash.display.LoaderInfo;import flash.display.Sprite;import flash.events.Event;import flash.events.IOErrorEvent;import flash.events.MouseEvent;import flash.geom.Matrix;import flash.geom.Rectangle;import flash.net.FileFilter;import flash.net.FileReference;import flash.utils.ByteArray;import flash.display.MovieClip;import fl.controls.Button;import flash.text.TextFormat;import flash.text.TextFieldAutoSize;import fl.controls.Label;import flash.external.ExternalInterface;    import flash.net.FileFilter;import flash.net.FileReference;import flash.net.FileReferenceList;import flash.events.*;  import flash.net.navigateToURL;import flash.net.URLRequest;import flash.net.URLVariables;import flash.events.Event;import flash.net.URLLoader;import flash.net.*;public class upload extends MovieClip {private var fileUpload:FileReferenceList = new FileReferenceList();private var serverUrl:String = 'upload.php';private var imgWidth:Number = 980;private var imgHeight:Number = 650;private var imgQuality:Number = 80;private var imgtype:Number = 0;private var jsFunction:String = '';  private var sessionid:String = '';   private var uploadid:String = '';    private var upfile:Array=new Array();private var btnname:String = "选择上传图片"; private var infobar:Label = new Label();public function upload() {// constructor codetrace("hello word!");var parameters:Object= root.loaderInfo.parameters;if(parameters != null){if(parameters["serverUrl"] != null){serverUrl = String(parameters["serverUrl"]);}if(parameters["imgWidth"] != null){imgWidth = Number(parameters["imgWidth"]);}if(parameters["imgHeight"] != null){imgHeight = Number(parameters["imgHeight"]);}if(parameters["imgQuality"] != null){imgQuality = Number(parameters["imgQuality"]);}if(parameters["jsFunction"] != null){jsFunction = String(parameters["jsFunction"]);}if(parameters["uploadid"] != null){uploadid = String(parameters["uploadid"]);}if(parameters["btnText"] != null){btnname = String(parameters["btnText"]);}if(parameters["sessionid"] != null){sessionid = String(parameters["sessionid"]);}                  if(parameters["imgtype"] != null){imgtype = Number(parameters["imgtype"]);}                   }var myButton:Button = new Button();myButton.label = btnname;myButton.width = 100;myButton.height = 30;myButton.move(10,10);var t1:TextFormat=new TextFormat();t1.bold=true;t1.size=14;myButton.setStyle("textFormat",t1);this.addChild(myButton);infobar.width=200;infobar.height = 30;infobar.move(10,45);infobar.text="请选择图片,可以多选!";this.addChild(infobar);//点击事件,选择图片myButton.addEventListener(MouseEvent.CLICK,buttonClick);fileUpload.addEventListener(Event.SELECT, selectHandler);fileUpload.addEventListener(Event.COMPLETE, loadImageComplete);                fileUpload.addEventListener(IOErrorEvent.IO_ERROR, function(evt:IOErrorEvent):void{infobar.text="加载图片失败!错误信息:" + evt.text;});fileUpload.addEventListener(SecurityErrorEvent.SECURITY_ERROR, function(evt:SecurityErrorEvent):void{infobar.text="加载图片失败!错误信息:" + evt.text;});}private function selectHandler(e:Event):void {//处理选择图片infobar.text="选择了"+ e.target.fileList.length +"个图片。";upfile=new Array();var file:FileReference;  for (var i:uint = 0; i < e.target.fileList.length; i++) {  file = FileReference(e.target.fileList[i]); file.addEventListener(Event.COMPLETE, loadImageComplete);             file.addEventListener(IOErrorEvent.IO_ERROR, function(evt:IOErrorEvent):void{infobar.text="读入图片失败!错误信息:" + evt.text;});file.addEventListener(SecurityErrorEvent.SECURITY_ERROR, function(evt:SecurityErrorEvent):void{infobar.text="读入图片失败!错误信息:" + evt.text;});//加载图片到内存file.load();//保存起来upfile.push(file);}}         private function loadImageComplete(evt:Event):void{trace('abb'+evt.target.name);//完成加载图片infobar.text="读取完"+ evt.target.name +"图片,正在处理中。。。";var objname:String=String(evt.target.name);var loader:Loader = new Loader();loader.contentLoaderInfo.addEventListener(Event.COMPLETE, function (event:Event):void{var loaderInfo:LoaderInfo = (event.target as LoaderInfo);var bitmap:Bitmap = Bitmap(loaderInfo.content);var _imageContainer = new Sprite();_imageContainer.addChild(bitmap);//this.addChild(_imageContainer);var xsize:Number;var ysize:Number;var rsize:Number=1;var asize:Number;var bsize:Number;var nw:Boolean=false;var nh:Boolean=false;var imageData:BitmapData;var shiftOrigin:Matrix;trace("width:"+bitmap.width+"height:"+bitmap.height);if(imgtype==2){//最大边对齐if(bitmap.width > imgWidth || bitmap.height > imgHeight){if(bitmap.width > bitmap.height){ asize=imgWidth / bitmap.width;nw=true; } if(bitmap.height > bitmap.width){ bsize=imgHeight / bitmap.height; nh=true; } if(nw && nh){ if(asize < bsize){ rsize = asize;}else{ rsize = bsize; } }else if(nw){ rsize = asize;}else if(nh){ rsize = bsize;} }ysize = Math.ceil(bitmap.height*rsize);xsize = Math.ceil(bitmap.width*rsize);      asize=0;bsize=0;if(ysize>imgHeight){bsize=Math.round((ysize-imgHeight)/2);ysize=imgHeight;}if(asize>imgWidth){asize=Math.round((asize-imgWidth)/2);xsize =imgWidth;}                    imageData= new BitmapData(xsize,ysize);shiftOrigin= new Matrix();shiftOrigin.scale(rsize,rsize);  shiftOrigin.translate(-asize,-bsize);               }else if(imgtype==1){//缩放到固定大小if(bitmap.width > imgWidth || bitmap.height > imgHeight){if(bitmap.width > imgWidth){ asize=imgWidth / bitmap.width;nw=true; } if(bitmap.height > imgHeight){ bsize=imgHeight / bitmap.height; nh=true; } if(nw && nh){ if(asize < bsize){ rsize = bsize;}else{ rsize = asize; } }else if(nw){ rsize = asize;}else if(nh){ rsize = bsize;} }trace(rsize+":r");asize=Math.round(((bitmap.width*rsize)-imgWidth)/2);bsize=Math.round(((bitmap.height*rsize)-imgHeight)/2);if(imgWidth>bitmap.width){xsize = bitmap.width;asize=0;}else{xsize = imgWidth;}   if(imgHeight>bitmap.height){ysize = bitmap.height;bsize=0;}else{ysize = imgHeight;}       imageData= new BitmapData(xsize,ysize);shiftOrigin= new Matrix();shiftOrigin.scale(rsize,rsize);  shiftOrigin.translate(-asize,-bsize);}else{//默认不大于if(bitmap.width > imgWidth || bitmap.height > imgHeight){if(bitmap.width > imgWidth){ asize=imgWidth / bitmap.width;nw=true; } if(bitmap.height > imgHeight){ bsize=imgHeight / bitmap.height; nh=true; } if(nw && nh){ if(asize < bsize){ rsize = asize; }else{ rsize = bsize; } }else if(nw){ rsize = asize; }else if(nh){ rsize = bsize; } }trace(rsize+":r");ysize = Math.round(bitmap.height*rsize);xsize = Math.round(bitmap.width*rsize);      imageData= new BitmapData(xsize,ysize);shiftOrigin= new Matrix();shiftOrigin.scale(rsize,rsize);  trace(xsize+" "+ysize);}imageData.draw(_imageContainer, shiftOrigin);var encodedImage:ByteArray;var jpgEncoder:JPGEncoder = new JPGEncoder(80);encodedImage = jpgEncoder.encode(imageData);//释放imageData.dispose();infobar.text="编码完成,正在上传"+ objname +"图片";var req:URLRequest = new URLRequest(serverUrl+"?sessionid="+sessionid+"&filename="+encodeURIComponent(objname));                      req.contentType = 'applicatoin/octet-stream';req.method = URLRequestMethod.POST;/*var variables:URLVariables = new URLVariables();variables.filename=encodeURIComponent(objname);variables.filedata=encodedImage;variables.width=imageData.width.toString();variables.height=imageData.height.toString();var arrHead:Array = new Array();arrHead.push(new URLRequestHeader("fileName", encodeURIComponent(objname)));arrHead.push(new URLRequestHeader("width", imageData.width.toString()));arrHead.push(new URLRequestHeader("height", imageData.height.toString()));req.requestHeaders = arrHead;*/req.data = encodedImage;var loader:URLLoader = new URLLoader();loader.addEventListener(Event.COMPLETE, uploadComplete);loader.addEventListener(IOErrorEvent.IO_ERROR, function(evt:IOErrorEvent):void{trace("上传图片失败!错误信息:" + evt.text);infobar.text="上传图片io错误:" + evt.text;});loader.addEventListener(SecurityErrorEvent.SECURITY_ERROR, function(evt:SecurityErrorEvent):void{trace("上传图片失败!错误信息:" + evt.text);infobar.text="上传图片安全错误:" + evt.text;});try{infobar.text="正在上传"+ objname +"图片";loader.load(req);} catch (error:Error){trace("上传失败!" + error.message);infobar.text="上传失败:" + error.message;}});loader.loadBytes(evt.target.data);}private function showError(str:String):void{callJs('error', str);infobar.text=str;}private function uploadComplete(evt:Event):void{                         callJs('complete', evt.target.data);infobar.text="上传完成:"+ evt.target.data;//调用输入框的idif(uploadid!= null){callJs('uploadid', evt.target.data);}}private function callJs(type:String, str:String):void{if(jsFunction == ''){return;}try{if(ExternalInterface.available){ExternalInterface.call(jsFunction, type, str);}}catch(err:Error){}}            private function buttonClick(e:MouseEvent) {var fileFilter:FileFilter = new FileFilter("图片", "*.jpg;*.gif;*.jpeg;");fileUpload.browse([fileFilter]);}}}

flash 上传类 带自动压缩功能相关推荐

  1. iOS学习:调用相机,选择图片上传,带预览功能

    iOS学习:调用相机,选择图片上传,带预览功能 发表于2年前(2013-05-30 21:38)   阅读( 18194) | 评论( 16) 27人收藏此文章,我要收藏 赞3 8月22日珠海 OSC ...

  2. php带截切图片上传_PHP大文件切割上传并带进度条功能示例

    本文实例讲述了PHP大文件切割上传并带进度条功能.分享给大家供大家参考,具体如下: 前面一篇介绍了PHP大文件切割上传功能,这里再来进一步讲解PHP大文件切割上传并带进度条功能. 项目结构图: 14- ...

  3. php 上传类 缩略图,php图片文件上传类 (附自动生成缩略图) | 学步园

    /** 作 者:冻结回忆 (linghunts@163.com); 功 能:文件上传类 支持文件夹自动分组保存(2008-01/09); 时 间:2007-10-17; 创建类:参数(文件域,文件原名 ...

  4. php将上传的文件自动压缩,如何在服务器端实现文件自动压缩和解压

    使用过虚拟主机时,有时需要备份或者更新过自己整个网站的内容.如果服务器支持压缩解压,那自然再好不过--备份时在后台生成压缩包,直接下载;更新时上传一个打包的压缩文件,在线解压即可.可是很不幸,很多空间 ...

  5. base64图裁剪 php_php图片上传类(支持缩放、裁剪、图片缩略功能)

    namespace dollarphp; /** * @desc:图片上传类 * @author [Lee] ]> * 1.自动验证文件是表单提交的文件还是base64流提交的文件 * 2.验证 ...

  6. 手机上怎么压缩html文件夹,iphone手机怎么压缩文件 iphone自带文件压缩功能操作方法分享...

    iphone手机怎么压缩文件?目前国内有着很多的用户都在使用着iphone手机,iphone手机上也是有着很多的操作功能的,很多的用户都还是不是很熟悉,比如想用iphone手机进行压缩文件,应该怎么操 ...

  7. 功能强大的文件上传插件带上传进度-WebUploader

    WebUploader是由Baidu WebFE(FEX)团队开发的一个以HTML5/FLASH构建的现代文件上传组件.在现代的浏览器里面能充分发挥HTML5的优势,同时又不摒弃主流IE浏览器,沿用老 ...

  8. 一个能防止改名木马漏洞的无组件上传类

    现在流行的asp上传组件除了无惧的化境之外,最多的可能就是ewebEditor 和Fckeditor的上传是,但是经过测试都很难防止改名为gif和asp文件上传,在FckEditor中改名后的asp木 ...

  9. 解决使用FireFox下Flash上传文件时SESSION丢失的问题(swfupload)

    解决使用FireFox下Flash上传文件时SESSION丢失的问题(swfupload) 这几天在项目中遇到的问题,稍微整理一下. HTML 表单是我们常用来进行浏览器与服务器数据交互的途径,除了传 ...

最新文章

  1. Python3面向对象编程的三大特性 封装、继承、多态
  2. 轻松清理系统垃圾[转]
  3. VMware 完成 27 亿美元的 Pivotal 收购 | 云原生生态周报 Vol. 34
  4. 机器学习-集成学习-提升树-LightGBM
  5. 《推荐系统实践》样章:如何利用用户标签数据
  6. linux如何运行sh监控文件夹,如何使用Shell进行文件监控?
  7. 轮播图背景图铺满整个div
  8. CCA(典型相关分析)
  9. 3dmax2014 uv用法_3dmax2014UVW是什么意思,怎么展开UVWID:30075914
  10. java计算长方体面积和周长
  11. 如何减少开发中的 Bug
  12. webclient是什么意思_Web 是什么意思?
  13. 【历史上的今天】11 月 5 日:初代安卓系统公开发布;诺基亚更名为微软 Lumia;开放手持设备联盟成立
  14. iit delhi_IIT的完整形式是什么?
  15. 天气预报--桌面插件功能
  16. 华硕笔记本台式机安装系统
  17. 如何用Typora记笔记? | 附带Markdown基础教程
  18. 宇视2016c语言招聘试题,宇视科技2016招聘试题.docx
  19. 200108-如何通过中国国航App获取行程单
  20. select()用法

热门文章

  1. 高富帅、黑木耳、屌丝、女屌丝、白富美???求解
  2. 某菜菜子的Python-Day1 学习小结
  3. ie浏览器启动时报错 0xc0000005
  4. 求生之路服务器h修改,求生之路2配置文件改服务器组
  5. 名编辑电子杂志大师教程 | 在电子杂志页面添加链接
  6. 信创环境下Nginx正向代理实现内网发送邮件
  7. python名片系统管理源代码_python实现名片管理系统项目
  8. java不同对象的集合拷贝_集合java对象
  9. 如何解压zip压缩包中的部分文件
  10. 国产数据库达梦初学习