неверное значение отображается индикатором выполнения в jquery - PullRequest
0 голосов
/ 16 июня 2020

Я пытаюсь создать индикатор выполнения для серверной задачи, написанной на php и python, который показывает загрузку и ход обработки загруженного файла.

Моя проблема в том, что индикатор выполнения достигает 100%, когда файл перемещается в папки, и остается на этом значении, пока сценарий python не завершит обработку. Но я бы хотел, чтобы процентное соотношение следовало за обработкой в ​​сценарии python и достигало 100% только по завершении.

Собственно это мой js код

$.ajax({
    url: 'server.php',
    dataType: 'text',
    cache: false,
    contentType: false,
    processData: false,
    data: fd,
    type: 'post',
    xhr: function() {
         let xhr = new window.XMLHttpRequest();
         xhr.upload.addEventListener("progress", function(evt) {
           if (evt.lengthComputable) {
               let percentComplete = ((evt.loaded / evt.total) * 100);
               percentComplete = Math.round(percentComplete);
               $(".progress-bar").width(percentComplete + '%');
               $(".progress-bar").html(percentComplete + '%');
            }
          }, false);
          return xhr;
     },
     beforeSend:function(){
        $('.upload-alert').show();
     },
     success: function (php_script_response) {
         setSliders(usr);
         console.log(php_script_response); 
      }
});

А это php код

if (isset($_FILES['file']) && $_POST['user']!='')
{
    if ( 0 < $_FILES['file']['error'] ) {
        echo 'Error: ' . $_FILES['file']['error'] . '<br>';
    }
    else {
        $errors = [];
        $file_name = reset(explode('.', $_FILES['file']['name']));
        $file_ext = end(explode('.', $_FILES['file']['name']));
        $valid_ext = array('zip', 'mbox');

        if (!in_array($file_ext, $valid_ext))
            $errors[] = 'File not allowed';
        else{
            if (empty($errors)) {
                $path = 'uploads/'.$_POST['user'].'/'.$file_name;
                mkdir($path, 0777, true);
                move_uploaded_file($_FILES['file']['tmp_name'], $path.'/'.$_FILES['file']['name']);
            }

            if ($file_ext == 'zip'){
                $output = shell_exec('python /Users/leonardo/Sites/sna/server/dumper/fbDumpUploader.py '.$path.' '.$_POST['user'].' 2>&1');
                echo $output;
            }

            rrmdir($path);
        }
    }
}

Есть способ решить эту проблему? Большое спасибо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...