主类 HTTPSendPHP.as

 package
{
import com.JPEGEncoder.JPGEncoder;
import com.fylib.httpRequest.HttpRequestBuilder;
import com.fylib.httpRequest.HttpRequestBuilderConsts;
import flash.display.Bitmap;
import flash.display.BitmapData;
import flash.display.Loader;
import flash.display.Sprite;
import flash.events.Event;
import flash.events.HTTPStatusEvent;
import flash.net.URLLoader;
import flash.net.URLRequest;
import flash.utils.ByteArray; /**
* ...
* @author Frost.Yen
*/
public class HTTPSendPHP extends Sprite
{
private var bmp:Bitmap;
public function HTTPSendPHP()
{
var ldr:Loader = new Loader ;
ldr.load(new URLRequest("image.jpg"));
//加载的图片;
ldr.contentLoaderInfo.addEventListener(Event.COMPLETE,onComplete);
} private function onComplete(e:Event):void
{
var bmpd:BitmapData = e.target.content as Bitmap.bitmapData;
var jpgEncoder:JPGEncoder = new JPGEncoder(80);//图片质量
var jpgStream:ByteArray = jpgEncoder.encode(bmpd);//将图片数据转换成ByteArray存储 var HttpR:HttpRequestBuilder = new HttpRequestBuilder("php端地址");//php端地址
HttpR.writeImage("图片变量","图片名称",HttpRequestBuilderConsts.JPG,jpgStream);
//图片变量如:"data[Image][name]";
HttpR.writeHttpEnd();
HttpR.writeSeparator(); var loader:URLLoader = new URLLoader ;
var request:URLRequest = HttpR.getURLrequest();
loader.load(request);
loader.addEventListener(HTTPStatusEvent.HTTP_STATUS,httpStatusHandler);
loader.addEventListener(Event.COMPLETE,onSendComplete);
} private function onSendComplete(e:Event):void
{
trace("complete");
} private function httpStatusHandler(e:HTTPStatusEvent):void
{
trace(("status is " + e.status));
}
} }

其他类

 package com.fylib.httpRequest
{
import flash.net.URLRequest;
import flash.net.URLRequestMethod;
import flash.net.URLVariables;
import flash.utils.ByteArray; /**
* ...
* @author
*/
public class HttpRequestBuilder
{
/**
* 构造的URLRequest
*/
private var _request:URLRequest;
/**
* 构造的二进制ByteArray
*/
private var _byteArray:ByteArray;
/**
* Http协议分割符
*/
private var _separator:String;
/**
* 标志位 是否填写HTTP文件尾
*/
private var PROTOCAL_END_SET:Boolean = false; public function HttpRequestBuilder($url:String,$separator:String="7d86d710144a")
{
//初始化
this._separator = $separator;
this._request = new URLRequest($url);
this._request.method = URLRequestMethod.POST;
this._request.contentType = "multipart/form-data; boundary=---------------------------" + this._separator;
this._byteArray = new ByteArray ;
} /*
* 写入变量
* @param $name 写入的变量名
* @param $value 写入的变量值
*/
public function writeVariable($name:String,$value:String):void
{
writeSeparator();
_byteArray.writeUTFBytes(((("Content-Disposition: form-data; name=\"" + $name) + "\"\r\n\r\n") + $value));
} /*
* 写入图片
* @param $name 变量名
* @param $filename 图片文件名
* @param $type 图片类型,在HttpRequestBuilderConsts下定义
* @param $content 图片二进制数据
*/
public function writeImage($name:String,$filename:String,$type:String,$content:ByteArray):void
{
writeSeparator();
_byteArray.writeUTFBytes((((((("Content-Disposition: form-data; name=\"" + $name) + "\"; filename=\"") + $filename) + "\"\r\nContent-Type: ") + $type) + "\r\n\r\n"));
_byteArray.writeBytes($content);
} /*
* 构造HTTP分割线
*/
public function writeSeparator():void
{
_byteArray.writeUTFBytes((("\r\n-----------------------------" + separator) + "\r\n"));
} /*
* 构造HTTP结尾,只能调用一次,二次调用会抛出错误
*/
public function writeHttpEnd():void
{
if (! PROTOCAL_END_SET)
{
_byteArray.writeUTFBytes((("\r\n-----------------------------" + separator) + "--"));
PROTOCAL_END_SET = true;
}
else
{
throw new Error("Write the Http End More Than Once");
}
} /*
* 获取构造好的URLRequest
*/
public function getURLrequest():URLRequest
{
return this.request;
} //get set
public function get separator():String
{
return _separator;
}
/*public function set separator(value:String):void
{
//TODO 替换之前写入的内容
_separator = value;
}*/ /*
* 获取前会检查是否写入HTTP结尾,未调用的话会报错
*/
public function get request():URLRequest
{
if (! PROTOCAL_END_SET)
{
throw new Error("Havn't Write the Http End Yet");
}//??还是应该自动构造
_request.data = _byteArray;
return _request;
}
} }
 package com.fylib.httpRequest
{
/**
* ...
* @author
*/
public class HttpRequestBuilderConsts
{
public static const JPG:String = "image/jpeg";
public static const PNG:String = "image/x-png"; public function HttpRequestBuilderConsts()
{ } } }

[ActionScript 3.0] AS向php发送二进制数据方法之——在URLRequest中构造HTTP协议发送数据的更多相关文章

  1. [ActionScript 3.0] 通过内联函数对addFrameScript方法传递参数

    虽然说不推荐使用影片剪辑隐藏方法addFrameScript();但是解决某些问题,此方法的确会方便很多. 但是却不能直接传递参数,不过可以用迂回的方法,如下: mc.addFrameScript(m ...

  2. [ActionScript 3.0] AS3 访问舞台上元件的方法

    文档类: package { import flash.display.MovieClip; public class Main extends MovieClip { public function ...

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

    文章来自:https://blog.csdn.net/IT_xiao_guang_guang/article/details/104336604 前言   在程序设计中,发送验证码是常见的一个功能,用 ...

  4. [ActionScript 3.0] AS利用ByteArray向PHP发送二进制数据生成图片

    flash as3向php发送二进制数据,通过php保存成图片. AS端: package { import com.JPEGEncoder.JPGEncoder; import flash.disp ...

  5. [ActionScript 3.0] 十进制与二进制,十六进制等数据之间的相互转换

    将十进制转换为二进制,方法是:将数字除以2,根据余数来从右往左排列二进制的位数,如下以十进制数10为例 10除以2得5,余数为0,故第一个位置为0: 5除以2得2,余数为1,故第二个位置为1: 2除以 ...

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

    近期项目中可能要用到Flash存取数据,并与JS互调,所以就看了一下ActionScript 3.0,现把学习结果分享一下,希望对新手有帮助. 目录 ActionScript 3.0简介 Hello ...

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

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

  8. [ActionScript 3.0] LocalConnection示例

    下例包含两个 ActionScript 类,这两个类应当编译到两个单独的 SWF 文件中: 在 LocalConnectionSenderExample SWF 文件中,将创建 LocalConnec ...

  9. Asp.net Core中SignalR Core预览版的一些新特性前瞻,附源码(消息订阅与发送二进制数据)

    目录 SignalR系列目录(注意,是ASP.NET的目录.不是Core的) 前言 一晃一个月又过去了,上个月有个比较大的项目要验收上线.所以忙的脚不沾地.现在终于可以忙里偷闲,写一篇关于Signal ...

随机推荐

  1. Fog

    [Fog] Fog parameters are controlled with Fog command. Fogging blends the color of the generated pixe ...

  2. 解剖Nginx·自动脚本篇(4)工具型脚本系列

    目录 auto/have 向自动配置头文件追加可用宏定义(objs/ngx_auto_config.h) auto/nohave 向自动配置头文件追加不可用宏定义(objs/ngx_auto_conf ...

  3. U3D OnDrawGizmos

    private void OnDrawGizmos() { Debug.Log("OnDrawGizmos"); Gizmos.DrawWireSphere(this.transf ...

  4. -other linker flags - 详解

    • 值:-objC,-all_load,-force_load

 • -objC: 在iOS 中,使用-all_load时,如果静态库中有类别时会出问题,使用其他两个值则不会有问题.

 • -al ...

  5. centos6.5系统hadoop2.7安装sqoop

    一.sqoop简介 Sqoop是一款开源的工具,主要用于在Hadoop(Hive)与传统的数据库(mysql.postgresql...)间进行数据的传递,可以将一个关系型数据库(例如 : MySQL ...

  6. 工作流系统webservice服务

    http://blog.csdn.net/zhengzhb/article/details/7477616

  7. 实践作业4:Web测试实践(小组作业)每日任务记录3

    会议时间:2017年12月23日 会议地点:东九教学楼自习区 主  持  人:王晨懿 参会人员:王晨懿.余晨晨.郑锦波.杨潇.侯欢.汪元 记  录  人:王晨懿 会议议题:小组作业第二阶段 下面是今天 ...

  8. MySQL 存储过程 -流程控制的使用

    #五.流程控制的使用 #1.IF 使用 create PROCEDURE iftest1() BEGIN DECLARE a int DEFAULT 10; -- IF (a>1 &&a ...

  9. 4.3.1 ThreadLoacl简单使用

    我们都知道  SimpleDateFormat 这个类是线程 不安全的,那么我下面的程序执行就会遇到问题 public class ParseDateDemo { private static fin ...

  10. HDU 6005 Pandaland (Dijkstra)

    题意:给定一个图,找出一个最小环. 析:暴力枚举每一条,然后把边设置为最大值,以后就不用改回来了,然后跑一遍最短路,跑 n 次就好. 代码如下: #pragma comment(linker, &qu ...