[ActionScript 3.0] AS向php发送二进制数据方法之——在URLRequest中构造HTTP协议发送数据...
主类 HTTPSendPHP.as
1 package 2 { 3 import com.JPEGEncoder.JPGEncoder; 4 import com.fylib.httpRequest.HttpRequestBuilder; 5 import com.fylib.httpRequest.HttpRequestBuilderConsts; 6 import flash.display.Bitmap; 7 import flash.display.BitmapData; 8 import flash.display.Loader; 9 import flash.display.Sprite; 10 import flash.events.Event; 11 import flash.events.HTTPStatusEvent; 12 import flash.net.URLLoader; 13 import flash.net.URLRequest; 14 import flash.utils.ByteArray; 15 16 /** 17 * ... 18 * @author Frost.Yen 19 */ 20 public class HTTPSendPHP extends Sprite 21 { 22 private var bmp:Bitmap; 23 public function HTTPSendPHP() 24 { 25 var ldr:Loader = new Loader ; 26 ldr.load(new URLRequest("image.jpg")); 27 //加载的图片; 28 ldr.contentLoaderInfo.addEventListener(Event.COMPLETE,onComplete); 29 } 30 31 private function onComplete(e:Event):void 32 { 33 var bmpd:BitmapData = e.target.content as Bitmap.bitmapData; 34 var jpgEncoder:JPGEncoder = new JPGEncoder(80);//图片质量 35 var jpgStream:ByteArray = jpgEncoder.encode(bmpd);//将图片数据转换成ByteArray存储 36 37 var HttpR:HttpRequestBuilder = new HttpRequestBuilder("php端地址");//php端地址 38 HttpR.writeImage("图片变量","图片名称",HttpRequestBuilderConsts.JPG,jpgStream); 39 //图片变量如:"data[Image][name]"; 40 HttpR.writeHttpEnd(); 41 HttpR.writeSeparator(); 42 43 var loader:URLLoader = new URLLoader ; 44 var request:URLRequest = HttpR.getURLrequest(); 45 loader.load(request); 46 loader.addEventListener(HTTPStatusEvent.HTTP_STATUS,httpStatusHandler); 47 loader.addEventListener(Event.COMPLETE,onSendComplete); 48 } 49 50 private function onSendComplete(e:Event):void 51 { 52 trace("complete"); 53 } 54 55 private function httpStatusHandler(e:HTTPStatusEvent):void 56 { 57 trace(("status is " + e.status)); 58 } 59 } 60 61 }
其他类
1 package com.fylib.httpRequest 2 { 3 import flash.net.URLRequest; 4 import flash.net.URLRequestMethod; 5 import flash.net.URLVariables; 6 import flash.utils.ByteArray; 7 8 /** 9 * ... 10 * @author 11 */ 12 public class HttpRequestBuilder 13 { 14 /** 15 * 构造的URLRequest 16 */ 17 private var _request:URLRequest; 18 /** 19 * 构造的二进制ByteArray 20 */ 21 private var _byteArray:ByteArray; 22 /** 23 * Http协议分割符 24 */ 25 private var _separator:String; 26 /** 27 * 标志位 是否填写HTTP文件尾 28 */ 29 private var PROTOCAL_END_SET:Boolean = false; 30 31 public function HttpRequestBuilder($url:String,$separator:String="7d86d710144a") 32 { 33 //初始化 34 this._separator = $separator; 35 this._request = new URLRequest($url); 36 this._request.method = URLRequestMethod.POST; 37 this._request.contentType = "multipart/form-data; boundary=---------------------------" + this._separator; 38 this._byteArray = new ByteArray ; 39 } 40 41 /* 42 * 写入变量 43 * @param $name 写入的变量名 44 * @param $value 写入的变量值 45 */ 46 public function writeVariable($name:String,$value:String):void 47 { 48 writeSeparator(); 49 _byteArray.writeUTFBytes(((("Content-Disposition: form-data; name=\"" + $name) + "\"\r\n\r\n") + $value)); 50 } 51 52 /* 53 * 写入图片 54 * @param $name 变量名 55 * @param $filename 图片文件名 56 * @param $type 图片类型,在HttpRequestBuilderConsts下定义 57 * @param $content 图片二进制数据 58 */ 59 public function writeImage($name:String,$filename:String,$type:String,$content:ByteArray):void 60 { 61 writeSeparator(); 62 _byteArray.writeUTFBytes((((((("Content-Disposition: form-data; name=\"" + $name) + "\"; filename=\"") + $filename) + "\"\r\nContent-Type: ") + $type) + "\r\n\r\n")); 63 _byteArray.writeBytes($content); 64 } 65 66 /* 67 * 构造HTTP分割线 68 */ 69 public function writeSeparator():void 70 { 71 _byteArray.writeUTFBytes((("\r\n-----------------------------" + separator) + "\r\n")); 72 } 73 74 /* 75 * 构造HTTP结尾,只能调用一次,二次调用会抛出错误 76 */ 77 public function writeHttpEnd():void 78 { 79 if (! PROTOCAL_END_SET) 80 { 81 _byteArray.writeUTFBytes((("\r\n-----------------------------" + separator) + "--")); 82 PROTOCAL_END_SET = true; 83 } 84 else 85 { 86 throw new Error("Write the Http End More Than Once"); 87 } 88 } 89 90 /* 91 * 获取构造好的URLRequest 92 */ 93 public function getURLrequest():URLRequest 94 { 95 return this.request; 96 } 97 98 //get set 99 public function get separator():String 100 { 101 return _separator; 102 } 103 /*public function set separator(value:String):void 104 { 105 //TODO 替换之前写入的内容 106 _separator = value; 107 }*/ 108 109 /* 110 * 获取前会检查是否写入HTTP结尾,未调用的话会报错 111 */ 112 public function get request():URLRequest 113 { 114 if (! PROTOCAL_END_SET) 115 { 116 throw new Error("Havn't Write the Http End Yet"); 117 }//??还是应该自动构造 118 _request.data = _byteArray; 119 return _request; 120 } 121 } 122 123 }
1 package com.fylib.httpRequest 2 { 3 /** 4 * ... 5 * @author 6 */ 7 public class HttpRequestBuilderConsts 8 { 9 public static const JPG:String = "image/jpeg"; 10 public static const PNG:String = "image/x-png"; 11 12 public function HttpRequestBuilderConsts() 13 { 14 15 } 16 17 } 18 19 }
转载于:https://www.cnblogs.com/frost-yen/p/4544108.html
[ActionScript 3.0] AS向php发送二进制数据方法之——在URLRequest中构造HTTP协议发送数据...相关推荐
- Java中使用SMTP协议发送电子邮件
Java中使用SMTP协议发送电子邮件的具体的步骤: 1.首先需要获取发送邮件的Session对象 Session session = Session.getDefaultInstance(prope ...
- 服务器发送二进制文件大小,如何从dotnet核心服务器向SignalR客户端发送二进制文件...
我们有一个使用.Net向SignalR客户端发送文件的解决方案我们现在已移至 .Net Core 在以前的.net解决方案中,我们通过 GlobalHost.ConnectionManager 使用H ...
- Java中通过TCP协议发送和接收数据-Socket编程
TCP TCP协议是面向连接.保证高可靠性(数据无丢失.数据无失序.数据无错误.数据无重复到达)传输层协议. TCP通过三次握手建立连接,通讯完成时要拆除连接,由于TCP是面向连接的所以只能用于端到端 ...
- java ncso发送电邮_如何在Windows中从命令行发送电子邮件(无需额外的软件)
java ncso发送电邮 In Windows there is no way to natively send mail from the Command Prompt, but because ...
- 《Adobe Flash CS4 ActionScript 3.0中文版经典教程》——ActionScript 3.0简介
本节书摘来自异步社区<Adobe Flash CS4 ActionScript 3.0中文版经典教程>一书中的ActionScript 3.0简介,作者: [美]Adobe公司 更多章节内 ...
- C# WinForm 使用SMTP协议发送QQ邮箱验证码
文章目录 前言 功能实现步骤 一.获取QQ邮箱授权码 二.功能界面 三.创建发送邮箱验证码的类 四.在From1中调用类中的函数,实现功能 前言 在程序设计中,发送验证码是常见的一个功能,用户在注 ...
- 《ActionScript 3.0权威指南》阅读笔记
第二章 配置开发环境 目前,主流的ActionScript 3.0开发环境分为Flash和Flex两大类.前者是设计和开发一体的集成环境,后者是严肃的脚本开发平台,更符合程序猿的析构.开发者应根据自 ...
- 《ActionScript 3.0基础教程》——1.4 对象参数
本节书摘来自异步社区<ActionScript 3.0基础教程>一书中的第1章,第1.4节,作者: [美]Doug Winnie 更多章节内容可以访问云栖社区"异步社区" ...
- [转]ActionScript 3.0入门:Hello World、文件读写、数据存储(SharedObject)、与JS互调
本文转自:http://www.cnblogs.com/artwl/p/3396330.html 近期项目中可能要用到Flash存取数据,并与JS互调,所以就看了一下ActionScript 3.0, ...
最新文章
- Cygwin的安装及在Android jni中的简单使用举例
- oracle中dlink使用,Oracle,MetaLink,中文使用指南
- PyQt5初级——2
- 文曲星猜数游戏的非TDD实现
- python字符编码与转码
- 香港计算机课程,香港计算机科学专业学什么?开设了哪些课程
- JqueryUI 引领Java开发新方式:专注UI,快速开发!(JqueryUI+jeecg结合, 升华的开发模式)
- oracle exp(dmp)命令带过滤条件?
- Javassist进行方法插桩
- 基础学习日志 ━━ 变量、函数、类命名时常用的英文词汇
- Linux 学习笔记 (一)
- [算法导论] 邮递员问题代码c++实现,Floyd算法+dp,求遍历所有边回到起点的最短路径
- win7工作组看不到“其他电脑”的解决方法
- 财帮子基金理财社区上线
- 前端程序员《HTML》标签学习
- The following signatures were invalid: EXPKEYSIG F42ED6FBAB17C654 的解决方法
- 密码学0930大作业
- 为什么后端显示修改成功,但数据库的数据却没有改变
- 软文营销登顶销售奇迹的4U定律你知道吗?
- 05 -数据分析与SQL- Lesson5 SQL数据清理