我的 AS3 Flash 代码中有以下代码,它使用 JPGEncoder 在 swf 中截取屏幕截图,并将其发送到我将其写入 PHP 文件的 url。
我最近确实遇到了 Google Chrome Pepperflash 问题,其中该功能刚刚停止并且页面无法重定向。没有任何东西被发送到 save.php。通过改变
var header:URLRequestHeader = new URLRequestHeader ("Content-type", "application/octet-stream");
至
var header:URLRequestHeader = new URLRequestHeader ("Content-type", "text/plain");
这似乎奏效了。到今天为止,虽然这适用于 Internet Explorer,但不再适用于 Chrome、Safari、Firefox。我看到 Adobe 昨天发布了 Flash 和 Flash 播放器的更新/补丁 - 这可能与它有关吗?
如果我删除以下内容:
var header:URLRequestHeader = new URLRequestHeader ("Content-type", "text/plain");
jpgURLRequest.requestHeaders.push(header);
然后页面成功重定向,但$GLOBALS['HTTP_RAW_POST_DATA']
随后为空,因此无法创建图像文件。
我可以放一个替代标题来解决这个问题吗?
我的代码是:
AS3:
function createJPG(m:MovieClip, q:Number, fileName:String) {
var jpgSource:BitmapData = new BitmapData(stage.stageWidth, stage.stageHeight);
jpgSource.draw(stage);
var jpgScreenshot: BitmapData = new BitmapData(362, 310);
jpgScreenshot.copyPixels(jpgSource, new Rectangle(288, 89, 362, 310), new Point(0, 0));
var jpgEncoder:JPGEncoder = new JPGEncoder(q);
var jpgStream:ByteArray = jpgEncoder.encode(jpgScreenshot);
var header:URLRequestHeader = new URLRequestHeader ("Content-type", "text/plain");
var jpgURLRequest:URLRequest = new URLRequest ("http://www.url.com/save.php");
jpgURLRequest.requestHeaders.push(header);
jpgURLRequest.method = URLRequestMethod.POST;
jpgURLRequest.data = jpgStream;
var jpgURLLoader:URLLoader = new URLLoader();
navigateToURL(jpgURLRequest, "_self");
}
保存.php
$imagefile=''.$imageURL.'';
$fp = fopen($imagefile, 'wb');
fwrite($fp, $GLOBALS['HTTP_RAW_POST_DATA']);
fclose($fp);
header('Location: https://www.url.com/your-image.php');