主类 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. 互联网大规模数据分析技术(自主模式)第五章 大数据平台与技术 第10讲 大数据处理平台Hadoop

    大规模的数据计算对于数据挖掘领域当中的作用.两大主要挑战:第一.如何实现分布式的计算 第二.分布式并行编程.Hadoop平台以及Map-reduce的编程方式解决了上面的几个问题.这是谷歌的一个最基本 ...

  2. c++ 中介者模式(mediator)

    中介者模式:用一个中介对象来封装一系列的对象交互.中介者使各个对象不需要显示地相互引用,从而使其耦合松散,而且可以独立地改变他们之间的交互.中介者模式的例子很多,大到联合国安理会,小到房屋中介.下面以 ...

  3. Linux分区挂载点介绍

    一.Linux分区挂载点介绍 Linux分区挂载点介绍,推荐容量仅供参考不是绝对,跟各系统用途以及硬盘空间配额等因素实际调整: 分区类型 介绍 备注 /boot 启动分区 一般设置100M-200M, ...

  4. Springboot-读取核心配置文件及自定义配置文件

    读取核心配置文件 核心配置文件是指在resources根目录下的application.properties或application.yml配置文件,读取这两个配置文件的方法有两种,都比较简单. 核心 ...

  5. leetCode--towSum

    题目链接:https://leetcode.com/problems/two-sum/description/ 此题的意思是:给定一个target值,从给定的数组中找两个数,使得这两个数的和==tar ...

  6. OracleBulkCopy 修正帮

    using System;using System.Collections.Generic;using System.Data;using System.Linq;using System.Refle ...

  7. SQL游标 数据库编程样例

    --处理file与folder中的order -- 声明变量 DECLARE @fileid AS INT, @folderid AS INT, @order AS INT, @oldFolderId ...

  8. CodeForces 682B Alyona and Mex (题意水题)

    题意:给定一个序列,你可以对这里面的数用小于它的数来代替,最后让你求,改完后的最大的序列中缺少的最小的数. 析:这个题,读了两个多小时也没读懂,要是读懂了,肯定能做出来...没什么可说的,就是尽量凑1 ...

  9. HttpUploader2-queue版本

    1.1 2016版本 目标: 1.大幅度优化JS代码,面向开发人员更加友好,逻辑清晰,代码简洁,便于阅读,定制开发,扩展,更加符合企业级应用需求. 2.大幅度使用并发技术来提高上传速度,与HttpUp ...

  10. 51nod1298圆与三角形——(二分法)

    1298 圆与三角形  题目来源: HackerRank 基准时间限制:1 秒 空间限制:131072 KB 分值: 0 难度:基础题  收藏  关注 给出圆的圆心和半径,以及三角形的三个顶点,问圆同 ...