2011-07-04 14 views
0

swf(ローカルマシン上)でステージングされたムービークリップをリモートサーバーに転送しようとしています。以下はそれに関係するアクションスクリプトコードの一部です。phpから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で受け取る方法は?

本当に助けていただければ幸いです。 ありがとうございました!

答えて

0

URLLoaderはEvent.COMPLETEイベントをサポートしています。これは、リモート操作によってデータが返され、そのデータがURLRequest.dataに格納されたときに発生します。

PHPから、あなたはエコーデータには、Flashを使用して、単一の文字列よりも複雑なデータ型を検討する必要がありますので、受信多分JSONを使用してのように見えるオブジェクトを渡しますです:

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

これは、簡単なチェックのための簡単な1/0の結果値と、ユーザーへの出力のための文字列メッセージを提供します。あなたは連想配列を作成し、それをJSON.encode()でエンコードすることでPHPでそれを行います。

次に、Flash側でURLLoaderにイベントリスナーを追加してCOMPLETEイベントを検出し、AdobeコアライブラリのJSONクラスを使用してPHP出力を使用可能なオブジェクトにデコードします。

+0

まさに私が探していたものです。 – freedayum

関連する問題