Como faço para salvar bytearray no servidor via php?
Eu estou usando as3 + php simples, sem FMS ou tal entre. Eu estou fazendo um aplicativo de gravação de vídeo, e eu posso capturar quadros e convertê-los para flv codificado bytearray. Mas o problema acontece quando tento salvá-lo no servidor. Se eu converter o bytearray para uma string via codificação base64 e depois enviar essa string para o servidor, tudo funciona ok, mas o problema é que como é um arquivo de vídeo, pode ser bem grande, como 20mb ou mais, e por isso é preciso muito tempo para codificá-lo e, em seguida, carregá-lo, além disso, normalmente ocorrerá um tempo limite de script durante a codificação. Para tornar as coisas mais rápidas, estou tentando enviar o bytearray diretamente, mas meu painel net firebug mostra que os dados enviados são de 20 a 46 bytes. Por favor, me diga o que estou fazendo errado.
//var encoded_str = Base64.encodeByteArray(_baFlvEncoder.byteArray);
//Handle Upload
/*var url_data:URLVariables = new URLVariables();
url_data.data = _baFlvEncoder.byteArray;*/
var url_ref:URLRequest = new URLRequest("save_vid.php");
url_ref.contentType = 'application/octet-stream';
url_ref.data = _baFlvEncoder.byteArray;//url_data;
url_ref.method = URLRequestMethod.POST;
var urlLoader:URLLoader = new URLLoader();
// just making sure the server knows we are sending data in proper format
//urlLoader.dataFormat = URLLoaderDataFormat.TEXT;
urlLoader.dataFormat = URLLoaderDataFormat.BINARY;
try {
urlLoader.load( url_ref );
} catch (e:Error) {
trace(e);
}
E meu código PHP:
<?php
echo 'Data:<pre>';
print_r($_POST);
echo '</pre>';
//$decodedData= base64_decode($GLOBALS[ 'HTTP_RAW_POST_DATA' ]);
//file_put_contents("test.flv",$decodedData);
file_put_contents("test.flv",$GLOBALS[ 'HTTP_RAW_POST_DATA' ]);
?>