私の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 Player のアップデート/パッチを公開したのを見ましたが、何か関係があるのでしょうか?
以下を削除すると:
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");
}
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');