ActionScript 3中的ByteArray到MySQL - > PHP通过ZendAMF

时间:2010-12-01 19:49:12

标签: php mysql actionscript-3 zend-amf

我有一个ActionScript 3应用程序,它通过ZendAMF向PHP发送一个对象。该对象包含图像中的byteArray。

我目前将byteArray保存为Blob,如下所示:

$ba = new Zend_Amf_Value_ByteArray ( $im->bArray );
$data = mysql_real_escape_string ( $ba->getData () );

$query = "INSERT INTO  image ( byteArray ) VALUES ( '".$data."' );";
$result = mysql_query($query);
$error = mysql_error();

if($error)
 return "Error: " . $error;
else
 return true;

这似乎工作正常,我可以看到DB中的图像(这是在本地运行,我正在使用SequelPRO来查看数据库)。

问题是当我将byteArray发送回Flash时,Flash将byteArray长度报告为0。

这是我在PHP中的返回方法:

$result = mysql_query ( 'SELECT * FROM image');
$array = array();

while ( $row = mysql_fetch_assoc ( $result ) )
{
 $ba = new Zend_Amf_Value_ByteArray ( $row['byteArray'] );

 $image = new Image ();
 $image->id = $row['id'];
 $image->file = $row['filePath'];
 $image->bArray = $ba->getData();

 array_push ( $array, $image );
}

return ( $array );

有更好的方法吗? 任何帮助将不胜感激。

谢谢

1 个答案:

答案 0 :(得分:1)

仅仅从Zend_Amf_Value_ByteArray的快速谷歌,似乎Zend本身可能存在问题,因为它存在无法正确序列化字节数组的问题。

以下是Zend论坛的一些链接,讨论了这个问题:

  1. Zend_Amf does not properly serialize Zend_Amf_Value_ByteArray instances
  2. ByteArray does not serialize to Zend_Amf_Value_ByteArray. Instead a string is given
  3. Flex 4 / PHP Data-Centric Photo Transfers
  4. 祝你好运,希望这可以帮助你。