主类 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. 【LA2531 训练指南】足球联赛 【最大流】

    题意: 有n支队伍进行比赛,每支队伍需要打的比赛数目相同.每场比赛恰好一支队伍胜,另一支败.给出每支队伍目前胜的场数和败的场数,以及每两支队伍还剩下的比赛场数,确定所有可能的冠军的球队.(获胜场数最多 ...

  2. c++ 观察者模式(observer)

    观察者模式:定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新.它还有两个别名,依赖 (Dependents),发布-订阅(Publish-Subs ...

  3. cocoapods使用问题集锦(2017-04)

    今天公司在公司新发的电脑上边安装cocoapod发现容易忘记的几个问题,感觉需要记录下来. 问题一:系统默认ruby镜像的卸载命令行 -->     gem sources --remove h ...

  4. 494. Target Sum 添加标点符号求和

    [抄题]: You are given a list of non-negative integers, a1, a2, ..., an, and a target, S. Now you have ...

  5. 黑客攻击 UVa11825

    http://www.cnblogs.com/acm-bingzi/p/3272898.html Hackers’ Crackdown Miracle Corporations has a numbe ...

  6. React相关知识和经验的碎片化记录

    React相关知识和经验的碎片化记录 1.Warning: validateDOMNesting(...): Whitespace text nodes cannot appear as a chil ...

  7. Smarty的条件判断语句

    (1)基本句式{if $name eq "Fred"}Welcome Sir.{elseif $name eq "Wilma"}Welcome Ma'am.{e ...

  8. 3.3.5 高效读取:不变模式下的CopyOnWriteArrayList

    源码分析:读写(get,add) 一:get 方法 private E get(Object[] a, int index) { return (E) a[index];}可以看到读取数据的时候 没有 ...

  9. Redis安装及HA(High Availability)配置(转)

    出处:http://www.cnblogs.com/morvenhuang/p/4184262.html Redis是一种内存数据库,以KEY-VALUE(即键值对)的形式存储数据.这篇文章主要介绍的 ...

  10. HDU 4126 Genghis Khan the Conqueror (树形DP+MST)

    题意:给一图,n个点,m条边,每条边有个花费,给出q条可疑的边,每条边有新的花费,每条可疑的边出现的概率相同,求不能经过原来可疑边 (可以经过可疑边新的花费构建的边),注意每次只出现一条可疑的边,n个 ...