Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/actionscript-3/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Actionscript 3 如何向服务器发送bytearray并检测进度?_Actionscript 3_File Upload_Http Post_Progress Indicator - Fatal编程技术网

Actionscript 3 如何向服务器发送bytearray并检测进度?

Actionscript 3 如何向服务器发送bytearray并检测进度?,actionscript-3,file-upload,http-post,progress-indicator,Actionscript 3,File Upload,Http Post,Progress Indicator,我正在使用Flash运行时(Flash player 10)。我有一个flv编码的bytearray,我需要将它发送到服务器(简单的php,没有FMS或socket服务器)并保存在那里。我可以使用urlLoader发布所有内容,但是我无法获得进度百分比,因此我尝试使用如下文件引用保存它: var url_ref:URLRequest = new URLRequest("save_vid.php"); url_ref.contentType = "multipart/form-data;

我正在使用Flash运行时(Flash player 10)。我有一个flv编码的bytearray,我需要将它发送到服务器(简单的php,没有FMS或socket服务器)并保存在那里。我可以使用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.
你知道我该怎么做吗?

试试这个:

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']

哪一行抛出该错误?删除了PHP标记,因为这是一个纯actionscript问题,并且接收服务器与此无关。“函数的调用顺序不正确,或者之前的调用不成功。”-听起来您需要在某个地方对方法调用进行一些错误检查。问题是filereference希望用户实际浏览并选择一个文件,然后才能正常工作,否则它将抛出该错误。问题是,我并没有上传存储在用户系统中的文件,而是上传动态生成的bytearray。是否触发完整事件?是,触发完整事件。如果我发布的内容太大,IOError也会触发……但与进度触发无关