【问题标题】:POSTing ByteArray Data from AS3 to PHP将 ByteArray 数据从 AS3 发布到 PHP
【发布时间】:2010-10-26 15:26:27
【问题描述】:

我有这个:

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,My PHP 只是打开一个新文件,写入 post 数据并关闭(用于测试目的)。但是 $_POST 是空的!

【问题讨论】:

  • 能否发布您的 php 脚本(至少是您访问 POST 数据的部分)?
  • 我设法通过使用 $GLOBALS['HTTP_RAW_POST_DATA'] 而不是 $_POST; 来修复此错误;但是现在我有另一个错误,它生成的 JPG 文件只是黑色的!
  • 这就是我认为的错误,使用 $_POST 而不是读出原始帖子正文。这就是我要求 PHP 脚本的原因。 ;-)
  • 谢谢,但是新问题呢?黑屏而不是输出要生成的内容?

标签: php actionscript-3 bytearray


【解决方案1】:

$_POST 是一个包含字段 -> 值对的数组。您发送的是原始帖子数据。您可以使用file_get_contents('php://input')$HTTP_RAW_POST_DATA 检索它,但建议使用前者。

【讨论】:

  • 嘿,谢谢!但是现在 PHP 文件创建了一个 JPG 文件,但由于某种原因 JPG 是纯黑色的,但 Flash 发送的是一个带有灰色矩形的屏幕!
  • 尝试在每一边计算一个校验和,看看你在 PHP 中是否得到了你发送的内容。
  • 尝试检查标题 php.net/manual/en/function.getallheaders.php 。也许请求被压缩了。
  • 我收到的标头:x-flash-version: 10,0,22,91 Content-Type: application/octet-stream Content-Length: 6650 User-Agent: Shockwave Flash Host: localhost缓存控制:无缓存
  • 确定问题不在AS上?您应该在发送之前检查编码的 jpeg 是否正确。
猜你喜欢
  • 1970-01-01
  • 2012-08-14
  • 1970-01-01
  • 2012-07-17
  • 2023-03-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多