ByteArray для MySQL из ActionScript 3 -> PHP через ZendAMF - PullRequest
1 голос
/ 01 декабря 2010

У меня есть приложение ActionScript 3, которое отправляет объект в PHP через ZendAMF. Объект содержит 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;

Кажется, это работает нормально, и я вижу изображение в БД (оно работает локально, и я использую 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 Ответ

1 голос
/ 03 декабря 2010

Просто из быстрого Google Zend_Amf_Value_ByteArray кажется, что может быть проблема с самим Zend в том, что у него есть проблема с неправильной сериализацией вашего байтового массива.

Вот несколько ссылок на Zendфорумы, на которых обсуждается эта проблема:

  1. Zend_Amf неправильно сериализует экземпляры Zend_Amf_Value_ByteArray
  2. ByteArray не сериализуется в Zend_Amf_Value_ByteArray.Вместо этого дается строка
  3. Flex 4 / PHP-ориентированные на передачу данных фотографии

Удачи, и надеюсь, что это вам поможет.

...