最新的谷歌浏览器浏览器停止Flash(AS3)向浏览器发送POST数据

时间:2014-03-07 10:58:12

标签: google-chrome flash http-post

我的AS3 Flash代码中有以下代码,它使用JPGEncoder在swf中截取屏幕截图并将其发送到url,我将其写入PHP中的文件。

此代码已经运行了很长时间,但自最新的Google Chrome更新33.0.1750.146起,该功能才停止,页面无法重定向。什么都没有发送到save.php

我已经在Safari,Firefox,IE和Chrome的低版本中对此进行了测试,最高可达33.0.1750.117,并且完全正常。

这肯定是纯粹使用最新的Chrome的问题?有什么办法可以解决这个问题吗?

我的代码是:

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", "application/octet-stream");
    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");
}

save.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');

1 个答案:

答案 0 :(得分:2)

经过对pepperflash问题的大量搜索并尝试不同的方法后,以下简单的更改似乎有效:

替换:

var header:URLRequestHeader = new URLRequestHeader ("Content-type", "application/octet-stream");

使用:

var header:URLRequestHeader = new URLRequestHeader("Content-type","text/plain");

现在可以在Chrome上运行,但仍然适用于所有其他浏览器

希望这有助于其他任何人