У меня есть следующий код в моем коде AS3 Flash, который делает снимок экрана в swf с помощью JPGEncoder и отправляет его на URL-адрес, где я записываю его в файл на PHP.
Недавно я столкнулся с проблемой Google Chrome Pepperflash, когда функция просто останавливается, и страница не перенаправляется. В save.php ничего не отправляется. Путем изменения
var header:URLRequestHeader = new URLRequestHeader ("Content-type", "application/octet-stream");
to
var header:URLRequestHeader = new URLRequestHeader ("Content-type", "text/plain");
Казалось, это помогло. На сегодняшний день это работает в Internet Explorer, но больше не работает в Chrome, Safari, Firefox. Я видел, что Adobe вчера выпустила обновление/исправление для флеш-памяти и флеш-плеера — может ли это иметь какое-то отношение к этому?
Если я удалю следующее:
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');