Как отправить байтовый массив на сервер и обнаружить прогресс?
Я использую Flash Runtime (Flash Player 10). У меня есть байт-массив в кодировке FLV, который мне нужно отправить на сервер (простой php, без FMS или сокет-серверов) и сохранить там. Я могу использовать urlLoader и публиковать все, но тогда я не получу процент прогресса, поэтому вместо этого я попытался сохранить его со ссылкой на файл, например так:
var url_ref:URLRequest = new URLRequest("save_vid.php");
url_ref.contentType = "multipart/form-data; boundary="+getBoundary();
url_ref.data = _baFlvEncoder.byteArray;
url_ref.method = URLRequestMethod.POST;
var upfileRef:FileReference = new FileReference();
upfileRef.addEventListener(ProgressEvent.PROGRESS, onUploadProgress);
upfileRef.addEventListener(Event.COMPLETE, videoUploadComplete);
upfileRef.upload(url_ref);
Но когда я пытаюсь это сделать, я получаю сообщение об ошибке:
Error #2037: Functions called in incorrect sequence, or earlier call was unsuccessful.
Есть идеи, как я могу это сделать?
1 ответ
Попробуй это:
var vars :URLVariables = new URLVariables();
vars.bytearray = _baFlvEncoder.byteArray;
var req :URLRequest = new URLRequest("save_vid.php");
req.method = URLRequestMethod.POST;
req.data = vars;
var ldr :URLLoader = new URLLoader();
ldr.addEventListener( Event.COMPLETE, onLoaded );
ldr.addEventListener( IOErrorEvent.IO_ERROR, onIOError );
ldr.addEventListener( ProgressEvent.PROGRESS, onProgress );
ldr.load( req );
function onProgress( e:ProgressEvent ):void
{
trace( "Progress: " + e.bytesLoaded / e.bytesTotal );
}
и в PHP
$bytearray = $_POST['bytearray']