[ActionScript 3.0] AS向php发送二进制数据方法之——在URLRequest中构造HTTP协议发送数据
主类 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协议发送数据的更多相关文章
- [ActionScript 3.0] 通过内联函数对addFrameScript方法传递参数
虽然说不推荐使用影片剪辑隐藏方法addFrameScript();但是解决某些问题,此方法的确会方便很多. 但是却不能直接传递参数,不过可以用迂回的方法,如下: mc.addFrameScript(m ...
- [ActionScript 3.0] AS3 访问舞台上元件的方法
文档类: package { import flash.display.MovieClip; public class Main extends MovieClip { public function ...
- C# WinForm 使用SMTP协议发送QQ邮箱验证码
文章来自:https://blog.csdn.net/IT_xiao_guang_guang/article/details/104336604 前言 在程序设计中,发送验证码是常见的一个功能,用 ...
- [ActionScript 3.0] AS利用ByteArray向PHP发送二进制数据生成图片
flash as3向php发送二进制数据,通过php保存成图片. AS端: package { import com.JPEGEncoder.JPGEncoder; import flash.disp ...
- [ActionScript 3.0] 十进制与二进制,十六进制等数据之间的相互转换
将十进制转换为二进制,方法是:将数字除以2,根据余数来从右往左排列二进制的位数,如下以十进制数10为例 10除以2得5,余数为0,故第一个位置为0: 5除以2得2,余数为1,故第二个位置为1: 2除以 ...
- ActionScript 3.0入门:Hello World、文件读写、数据存储(SharedObject)、与JS互调
近期项目中可能要用到Flash存取数据,并与JS互调,所以就看了一下ActionScript 3.0,现把学习结果分享一下,希望对新手有帮助. 目录 ActionScript 3.0简介 Hello ...
- [转]ActionScript 3.0入门:Hello World、文件读写、数据存储(SharedObject)、与JS互调
本文转自:http://www.cnblogs.com/artwl/p/3396330.html 近期项目中可能要用到Flash存取数据,并与JS互调,所以就看了一下ActionScript 3.0, ...
- [ActionScript 3.0] LocalConnection示例
下例包含两个 ActionScript 类,这两个类应当编译到两个单独的 SWF 文件中: 在 LocalConnectionSenderExample SWF 文件中,将创建 LocalConnec ...
- Asp.net Core中SignalR Core预览版的一些新特性前瞻,附源码(消息订阅与发送二进制数据)
目录 SignalR系列目录(注意,是ASP.NET的目录.不是Core的) 前言 一晃一个月又过去了,上个月有个比较大的项目要验收上线.所以忙的脚不沾地.现在终于可以忙里偷闲,写一篇关于Signal ...
随机推荐
- Python基础:文件的基本操作
# 打开文件(如果不存在则新建) 向其中写入 f = open('D:\\test.txt', 'w') f.write('hello world, i am here!') f.close() pr ...
- 文件后缀与mime类型对应表
//文档文件类型的 .ai application/postscript .eps application/postscript .exe application/octet-stream ...
- Hibernate其它API
----------------siwuxie095 (一)Query 1.使用 Query 对象执行查询操作,不需要写 sql 语句,但是要写 hql 语句 (1)hql:即 Hibernate Q ...
- H5(1)
css布局模型 清楚了CSS 盒模型的基本概念. 盒模型类型, 我们就可以深入探讨网页布局的基本模型了.布局模型与盒模型一样都是 CSS 最基本. 最核心的概念. 但布局模型是建立在盒模型基础之上,又 ...
- hibernate 反向生实体类 and 为什么老是多一个id
hibernate 反向生实体类 and 为什么老是多一个id 2017年04月01日 20:32:51 阅读数:548
- CloudStack tomcat集成方式分析
CloudStack 的server.xml和tomcat6.conf都是软连接 CloudStack 在执行脚本时报异常如下: 修改vim /etc/sudoers文件,具体如下 以 ...
- sed命令n,N,d,D,p,P,h,H,g,G,x解析2
摘自: https://blog.csdn.net/xiexingshishu/article/details/50514132 sed命令n,N,d,D,p,P,h,H,g,G,x解析 2016年0 ...
- CSS3 圆环状进度条
HTML: <div class="wrap"> <div class="progress-radial progress-25"> & ...
- Oracle——约束
NOT NULLUNIQUE PRIMARY KEYFOREIGN KEYCHECK 如果不指定约束名 ,Oracle server 自动按照 SYS_Cn 的格式指定约束名 --指定约束名 CREA ...
- mysql-day01
Microsoft Windows [版本 10.0.17134.648](c) 2018 Microsoft Corporation.保留所有权利. C:\Users\lijun>java用法 ...