使用远程服务时更新文件上载进度

时间:2013-11-11 18:30:37

标签: php jquery ajax curl

所以我将视频文件上传到远程服务/服务器(Ooyala)。我正在努力弄清楚如何显示文件块发送到服务器的进度。我已经完成了其他所有工作并且显示上传的进度是我用例的最后一件事。我非常不愿意改变我的代码,我认为这就是为什么我没有得到它。用户将文件上传到表单,然后将其拆分为块,并使用formData附加它们。然后我的$ .ajax将所有formData发送到我的服务器进行处理,以便上传到远程Ooyala服务器:

$.ajax({
    url: ".parseUploadJSON.php",
    data: formData,
    processData: false,
    contentType: false,
    type: "POST",
        success: function (result) {
          if($('.notice').length != 0){
         $('.notice').hide();
          }
        $("#progress").hide();
        $("#alert").html("Thank you for your submission! Your video will be reviewed shortly. Please check back soon at <a href='http://site.com/page/local-video-uploads'>Local Video Uploads</a> to see if your entry has been approved.");
    console.log(result);
        }
    }); //end $.ajax 

从那里我使用Curl将块发送给Ooyala。无论如何我可以更新发送到服务器的块的客户端吗?我的curl_setopt($ ch,CURLOPT_RETURNTRANSFER,false);每次发送一个块时调用。

foreach($upload_urls as $key => $url){

    $response_bool = curlOps($_FILES['fileChunk'.$key]['tmp_name'], $url);
    if($response_bool){
        $percentage += (1/sizeof($upload_urls)*100);
        $response_array['status'] = 'success';
        $response_array['progress'] = $percentage;
    }else {
        $response_array['status'] = 'error';
        $response_array['message'] = 'Something happened.  Please refresh the page and try again';
        break;
    }
}

我正在考虑使用它作为指示器来了解块已成功发送。不幸的是,我的AJAX只在发送了所有块后才返回响应。有没有办法使用这个$ .ajax调用来做到这一点?

感谢您的时间

0 个答案:

没有答案