2011-07-04 68 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腳本到瑞士法郎和如何接收瑞士法郎的價值?

真的很感激任何幫助。 謝謝!

回答

0

URLLoader支持一個Event.COMPLETE事件,當您的遠程操作返回數據並且該數據已存儲在URLRequest.data中時會觸發該事件。

從PHP,你回聲是什麼閃光燈會收到,所以你可能要考慮更復雜的數據類型較單一字符串,也許使用JSON和傳遞一個對象,看起來像數據:

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

這爲您提供了一個簡單的1/0結果值,便於檢查和輸出給用戶的字符串消息。您可以通過創建一個關聯數組並使用JSON.encode()對其進行編碼來實現。

然後在Flash端,您將爲URLLoader添加一個事件偵聽器來檢測COMPLETE事件,並使用Adobe核心庫中的JSON類將您的PHP輸出解碼爲可用對象。

+0

正是我在找的東西,謝謝。 – freedayum