Возврат значения из php в swf - PullRequest
0 голосов
/ 04 июля 2011

Я пытаюсь перенести фрагмент ролика в формате SWF (на локальном компьютере) на удаленный сервер. Ниже приведена часть кода сценария действия, связанная с ним;

function createJPG(mc:MovieClip, n:Number, fileName:String) {

trace("sdf:");
var jpgSource:BitmapData = new BitmapData(mc.width,mc.height);
jpgSource.draw(mc);
var jpgEncoder:JPGEncoder = new JPGEncoder(n);
var jpgStream:ByteArray = jpgEncoder.encode(jpgSource);
trace("jpegStream::"+jpgStream);
var header:URLRequestHeader = new URLRequestHeader("Content-type","application/octet-stream");

var jpgURLRequest:URLRequest = new URLRequest("http://example.com/arts/savefile.php?name=" + fileName + ".jpg");

jpgURLRequest.requestHeaders.push(header);
jpgURLRequest.method = URLRequestMethod.POST;
jpgURLRequest.data = jpgStream;


var loader:URLLoader = new URLLoader();
trace("navigatetoURL:");

sendToURL(jpgURLRequest);    }

PHP-скрипт на удаленном сервере для сохранения файла:

<?php
set_time_limit(0);

if( isset($GLOBALS['HTTP_RAW_POST_DATA']) ) {

    $imageFile='images/'.$_GET['name'];
    $fp = fopen($imageFile, 'w+');

    // get bytearray
    fwrite($fp, $GLOBALS['HTTP_RAW_POST_DATA']);
    fclose($fp);

    if( file_exists($imageFile) ) {
        echo 'File saved.';
    }
    else {
        echo 'Error: Problem writing the file.';
    }
} 
else {
    echo 'Error: Not data available to write the file.';
}
?>

Я хочу закрыть swf после завершения загрузки. Я хотел бы знать, как вернуть значение (может быть числом, которое я намерен использовать для обозначения завершения передачи файла) из сценария php в swf и как получить это значение в SWF?

Был бы очень признателен за любую помощь. Спасибо!.

Ответы [ 2 ]

0 голосов
/ 04 июля 2011

URLLoader поддерживает событие Event.COMPLETE, которое вызывается, когда ваша удаленная операция возвращает данные и эти данные были сохранены в URLRequest.data.

Из PHP данные, которые вы выводите, - это то, что Flash получит, поэтому вы можете рассмотреть более сложный тип данных, чем одну строку, возможно, используйте json и передайте объект, который выглядит следующим образом:

{result:1,message:"some message"};

Это дает вам простое значение 1/0 для простой проверки и строковое сообщение для вывода пользователю. Это можно сделать в PHP, создав ассоциативный массив и закодировав его в JSON.encode().

Затем на стороне Flash вы добавите прослушиватель событий в ваш URLLoader для обнаружения события COMPLETE и используете класс JSON из базовой библиотеки Adobe для декодирования вашего вывода PHP в полезный объект.

0 голосов
/ 04 июля 2011

В настоящее время я всегда использую AMFPHP http://sourceforge.net/projects/amfphp/.Gotoandlearn имеет хороший бесплатный учебник http://www.gotoandlearn.com/.

...