主类 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协议发送数据...相关推荐

  1. Java中使用SMTP协议发送电子邮件

    Java中使用SMTP协议发送电子邮件的具体的步骤: 1.首先需要获取发送邮件的Session对象 Session session = Session.getDefaultInstance(prope ...

  2. 服务器发送二进制文件大小,如何从dotnet核心服务器向SignalR客户端发送二进制文件...

    我们有一个使用.Net向SignalR客户端发送文件的解决方案我们现在已移至 .Net Core 在以前的.net解决方案中,我们通过 GlobalHost.ConnectionManager 使用H ...

  3. Java中通过TCP协议发送和接收数据-Socket编程

    TCP TCP协议是面向连接.保证高可靠性(数据无丢失.数据无失序.数据无错误.数据无重复到达)传输层协议. TCP通过三次握手建立连接,通讯完成时要拆除连接,由于TCP是面向连接的所以只能用于端到端 ...

  4. java ncso发送电邮_如何在Windows中从命令行发送电子邮件(无需额外的软件)

    java ncso发送电邮 In Windows there is no way to natively send mail from the Command Prompt, but because ...

  5. 《Adobe Flash CS4 ActionScript 3.0中文版经典教程》——ActionScript 3.0简介

    本节书摘来自异步社区<Adobe Flash CS4 ActionScript 3.0中文版经典教程>一书中的ActionScript 3.0简介,作者: [美]Adobe公司 更多章节内 ...

  6. C# WinForm 使用SMTP协议发送QQ邮箱验证码

    文章目录 前言 功能实现步骤 一.获取QQ邮箱授权码 二.功能界面 三.创建发送邮箱验证码的类 四.在From1中调用类中的函数,实现功能 前言   在程序设计中,发送验证码是常见的一个功能,用户在注 ...

  7. 《ActionScript 3.0权威指南》阅读笔记

    第二章  配置开发环境 目前,主流的ActionScript 3.0开发环境分为Flash和Flex两大类.前者是设计和开发一体的集成环境,后者是严肃的脚本开发平台,更符合程序猿的析构.开发者应根据自 ...

  8. 《ActionScript 3.0基础教程》——1.4 对象参数

    本节书摘来自异步社区<ActionScript 3.0基础教程>一书中的第1章,第1.4节,作者: [美]Doug Winnie 更多章节内容可以访问云栖社区"异步社区" ...

  9. [转]ActionScript 3.0入门:Hello World、文件读写、数据存储(SharedObject)、与JS互调

    本文转自:http://www.cnblogs.com/artwl/p/3396330.html 近期项目中可能要用到Flash存取数据,并与JS互调,所以就看了一下ActionScript 3.0, ...

最新文章

  1. Cygwin的安装及在Android jni中的简单使用举例
  2. oracle中dlink使用,Oracle,MetaLink,中文使用指南
  3. PyQt5初级——2
  4. 文曲星猜数游戏的非TDD实现
  5. python字符编码与转码
  6. 香港计算机课程,香港计算机科学专业学什么?开设了哪些课程
  7. JqueryUI 引领Java开发新方式:专注UI,快速开发!(JqueryUI+jeecg结合, 升华的开发模式)
  8. oracle exp(dmp)命令带过滤条件?
  9. Javassist进行方法插桩
  10. 基础学习日志 ━━ 变量、函数、类命名时常用的英文词汇
  11. Linux 学习笔记 (一)
  12. [算法导论] 邮递员问题代码c++实现,Floyd算法+dp,求遍历所有边回到起点的最短路径
  13. win7工作组看不到“其他电脑”的解决方法
  14. 财帮子基金理财社区上线
  15. 前端程序员《HTML》标签学习
  16. The following signatures were invalid: EXPKEYSIG F42ED6FBAB17C654 的解决方法
  17. 密码学0930大作业
  18. 为什么后端显示修改成功,但数据库的数据却没有改变
  19. 软文营销登顶销售奇迹的4U定律你知道吗?
  20. 05 -数据分析与SQL- Lesson5 SQL数据清理

热门文章

  1. 【Docker】Docker的三大核心组件
  2. Go 知识点(10) — 子协程能否使用主协程变量
  3. python list 删除元素
  4. 比Momentum更快:揭开Nesterov Accelerated Gradient的真面目NAG 梯度下降
  5. LeetCode简单题之二叉搜索树的范围和
  6. Vitis-AI集成
  7. 双圆弧插值算法(三,代码实现)
  8. CVPR2020论文点评: AdderNet(加法网络)
  9. 2021年大数据Flink(十):流处理相关概念
  10. Windows 系统下使用grep 命令