@futurist08

Laravel vue axios как сделать прогресс бар?

добрый день уважаемые знатоки. подскажите как сделать laravel vue asios индикатор выполнения скрипта.
есть контроллер back
public function rasFileRecord($dir, $file, Request $request)
    {
        $all=count($zap);
        foreach ($zap as $z) {
            $rasZap = $this->rasZap->createOrUpdateZap($z, $rasFileDb->id);
            $this->rasSl->createOrUpdateSL($z, $rasZap->id);
            $n++;
            Session::pull('progress', $n);
            session('progress', $n);
            $_SESSION['progress']=$n;
                       response()->json(['message'=>'test']);
        }
    }

есть процедура vue
const CancelToken = axios.CancelToken;
      this.source = CancelToken.source();
      this.loading = true;
      let dir = this.$route.params.dir;
       axios
        .get(`/api/v1/ras-file-record/${dir}/${nameFile}`, {
          cancelToken: this.source.token,
          onDownloadProgress: progressEvent => {
            let contentLength = event.srcElement.getResponseHeader(
              "content-length"
            );
            let percentCompleted = Math.round(
              (progressEvent.loaded * 100) / progressEvent.total
            );
            /*let data = this.$session.get("progress");
            console.log(data);*/
            //console.log(progressEvent);
            //console.log(percentCompleted);
          }
        })
        .then(resp => {
          this.loading = false;
          console.log(resp);
        })
        .catch(err => {
          console.log(err);
        });

главный вопрос как отдать из laravel промежуточные результаты обработки и как забрать их в axios-запросе.
пробывал стандартными сесиями забирать с интервалом(js их не видит). заголовками тоже не получается так как axios их получает с ответом. Может есть какой нибудь другой вариант. Спасибо.
  • Вопрос задан
  • 129 просмотров
Пригласить эксперта
Ответы на вопрос 1
@Nc_Soft
Да, есть другой вариант
https://www.nginx.com/resources/wiki/modules/uploa...
p.s если речь не о загрузке файла, то надо сделать endpoint который отдает прогресс и долбить туда с интервалом
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы