将ByteArray数据从AS3发布到PHP
我有这个:将ByteArray数据从AS3发布到PHP,php,actionscript-3,bytearray,Php,Actionscript 3,Bytearray,我有这个: import JPGEncoder; var bmd:BitmapData = new BitmapData(stage.stageWidth, stage.stageHeight, true, 0); var bm:Bitmap = new Bitmap(bmd); bm.alpha = .5; stage.addEventListener(MouseEvent.MOUSE_DOWN, screenCap); function screenCap(e:Event):void {
import JPGEncoder;
var bmd:BitmapData = new BitmapData(stage.stageWidth, stage.stageHeight, true, 0);
var bm:Bitmap = new Bitmap(bmd);
bm.alpha = .5;
stage.addEventListener(MouseEvent.MOUSE_DOWN, screenCap);
function screenCap(e:Event):void {
bmd.draw(this);
var jpgVersion:JPGEncoder = new JPGEncoder( 80 );
var jpgStream:ByteArray = jpgVersion.encode( bmd );
var loader:URLLoader = new URLLoader();
var request:URLRequest = new URLRequest("http://localhost/takeshot.php");
request.method = URLRequestMethod.POST;
request.data = jpgStream;
loader.load(request);
function dataOnLoad(e:Event){
trace("Complete..");
}
}
这需要一个阶段的屏幕截图,并且应该通过POST数据将屏幕截图的字节数组发送给PHP,我的PHP只是打开一个新文件,写入POST数据并关闭(用于测试目的)。但是$u帖子是空的
$\u POST
是一个具有字段->值对的数组。您发送的是原始post数据。您可以使用file\u get\u contents('php://input“)
或来自$HTTP\u RAW\u POST\u DATA
,但前者是推荐的方法。您可以发布您的php脚本(至少是访问POST数据的部分)吗?我通过使用$GLOBALS['HTTP\u RAW\u POST\u DATA']而不是$\u POST来修复此错误;但现在我有另一个错误,它生成的JPG文件只是黑色的,没有别的!这就是我认为错误的地方,使用$\u POST而不是读取原始的POST正文。这就是为什么我要PHP脚本的原因。;-)谢谢,但是新问题呢?黑屏而不是输出要生成的内容?嘿,谢谢!但是现在PHP文件创建了一个JPG文件,但是由于某些原因JPG是纯黑色的,Flash发送的是一个带有灰色矩形的屏幕!试着计算每边的校验和,看看你在PHP中是否得到了你发送的内容。试着检查标题。可能是请求被压缩了。我收到的标题:x-flash-version:10,0,22,91内容类型:应用程序/八位字节流内容长度:6650用户代理:Shockwave flash主机:本地主机缓存控制:无缓存您确定问题不在AS中吗?在发送之前,您应该先检查编码的jpeg是否正常。