Heim  >  Artikel  >  Backend-Entwicklung  >  Amfphp1.9 非beta版 相干情况

Amfphp1.9 非beta版 相干情况

WBOY
WBOYOriginal
2016-06-13 13:01:46885Durchsuche

Amfphp1.9 非beta版 相关情况
1.编码问题
Fatal error: Uncaught exception 'VerboseException' with message 'Cannot modify header information
修正办法:
采用ANSI编码(这种搞起来,转换比较麻烦)或UTF8 no BOM,而非UTF8 with BOM
存为UTF8 no BOM模式:
DW参见:http://www.googlephp.cn/archives/tag/cannot-modify-header-information
DzSoft如图:
 Amfphp1.9 非beta版 相干情况

另外修改根目录下gateway.php (line127):
//$gateway->setCharsetHandler("utf8_decode", "ISO-8859-1", "ISO-8859-1");//注释掉,改为:
$gateway->setCharsetHandler("none", "ISO-8859-1", "ISO-8859-1");

2.NetStatusEvent
Flex/Flash 则报:
Error #2044: 未处理的 NetStatusEvent:。 level=error, code=NetConnection.Call.BadVersion
修正办法:
根目录下:
gateway.php(Line 132)

if(PRODUCTION_SERVER)
{
//Disable profiling, remote tracing, and service browser
//$gateway->disableDebug();//把它注释掉
// Keep the Flash/Flex IDE player from connecting to the gateway. Used for security to stop remote connections.
//$gateway->disableStandalonePlayer();//把它注释掉
}

3.Save byteArray into Mysql with Amfphp
AS code:
package 
{
	import flash.display.Sprite;
	import flash.net.NetConnection;
	import flash.net.ObjectEncoding;
	import flash.net.Responder;
	import flash.utils.ByteArray;
	import flash.display.BitmapData;

	public class Test extends Sprite
	{
		private var nc:NetConnection;
		private var rsp:Responder;

		public function Test()
		{
			rsp = new Responder(onResult,null);

			nc = new NetConnection( );
			nc.objectEncoding = ObjectEncoding.AMF3;
			nc.connect("http://127.0.0.1/AmfphpForWareHouse/gateway.php");
			nc.call("warehouse.MyPage.create",rsp,getData());
		}

		public function getData():Object
		{
			var obj:Object=new Object();
			obj.firstName = "diding";

			var bpd:BitmapData = new BitmapData(a.width,a.height);
			bpd.draw(a);

			var jpegEnc:JPEGEncoder = new JPEGEncoder(80);
			var dat:ByteArray = jpegEnc.encode(bpd);
			obj.pic = dat as ByteArray;
			return obj;
		}
		private function onResult( e: * ):void
		{
			trace(e);
		}
	}
}


Php Code:
<?php
require_once "ConnectionHelper.php";

class MyPage{

public function create($contact)
{
$GLOBALS['amfphp']['encoding']='amf3';
$times=date("Y-m-d H:i:s");
$ps1=$contact['firstName'];
$ba=$contact['pic'];
$data = $ba->data;
$data = mysql_real_escape_string($data);

$result=mysql_query("INSERT INTO userinfo (firstname,pic,addTime)VALUES ('$ps1','$data','$times')");
return $result;
}

}
?>


这样能存入Mysql数据库了,但在返回给flash或flex时,会出现convert报错,这时需要返回前在map(类映射)中new一下:new byteArray();
如:
<?php
class AppVO
{
        var $_explicitType ="vo.AppVO";
	var $id;
        var $userName;
        var $email;
        var $phone;
        var $address;
        var $pic;
        public function AppVO(){}

	public function mapObject($obj)
	{
		$this->id = $obj['id'];
		$this->userName = $obj['username'];
		$this->email = $obj['email'];
		$this->phone = $obj['phone'];
		$this->address = $obj['address'];
                $this->pic =new ByteArray($obj['pic']);
	}

}
?>

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn