Wie speichere ich bytearray via PHP auf dem Server?

Ich benutze einfach as3 + php, kein FMS oder so dazwischen. Ich mache eine Videoaufzeichnungs-App und kann Frames erfassen und in flv-codiertes bytearray konvertieren. Das Problem tritt jedoch auf, wenn ich versuche, es auf dem Server zu speichern. Wenn ich das bytearray über base64 encode in einen String konvertiere und diesen dann an den Server sende, funktioniert alles in Ordnung, aber das Problem ist, dass es sich um eine Videodatei handelt, die ziemlich groß sein kann, wie 20 MB oder so, und daher dauert es Das Codieren und Hochladen dauert sehr lange, außerdem tritt normalerweise ein Skript-Timeout während des Codierens auf. Um die Sache zu beschleunigen, versuche ich, das Bytearray direkt zu senden, aber mein Firebug-Net-Panel zeigt mir an, dass die gesendeten Daten zwischen 20 und 46 Byte groß sind. Bitte sag mir, was ich falsch mache.

//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);
            }

Und mein PHP Code:

<?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' ]);
?>

Antworten auf die Frage(3)

Ihre Antwort auf die Frage