将值从php返回到swf

时间:2011-07-04 08:36:57

标签: php actionscript file-transfer

我正在尝试将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 :(得分:0)

我现在总是使用AMFPHP http://sourceforge.net/projects/amfphp/。 Gotoandlearn有一个很好的免费教程http://www.gotoandlearn.com/

答案 1 :(得分: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输出解码为可用对象。