Здравствуйте! Хочу сделать прогресс бар загружая на AWS s3 используя AJAX (axios) и laravel методы в роутах. У меня есть функция onUploadProgress в axios, но она показывает не весь ход загрузки, а именно локалькую какую-то (или что-т одругое, не знаю как назвать. Мб без обработки только загрузка. - не важно), суть в том, что она доходит до 100%, но ответ приходит через пару секунд после этого.
Подскажите пожалуйста как можно сделать.
Для простоты понимая я сделал тестовый код , вот он:
HTML форма:
<form action="{{ route('task.store') }}" method="POST" enctype="multipart/form-data" class="form">
<input type="file" name="files[]" id="files" multiple required>
<input type="submit" id="btn">
</form>
JavaScript:
var btn = document.getElementById('btn');
var form = document.querySelector('.form');
form.addEventListener('submit', function(e){
e.preventDefault();
var file = document.querySelector('#files').files[0];
var data = new FormData();
data.append('test', file);
var settings = {
headers: { 'Content-Type': 'multipart/form-data' },
onUploadProgress: function (progressEvent) {
let percentCompleted = Math.round((progressEvent.loaded * 100) / progressEvent.total);
console.log(percentCompleted);
}
};
axios.post(this.action, data, settings)
.then(response => {
console.log(response);
})
.catch(response => {
console.log(response)
});
});
Роут на сервер (тот, который в action в форме):
public function store(Request $request) {
$path = 'folder';
$s3_path = $request->test->store($path, 's3');
return [
'path' => $s3_path
];
}
Буду признателен если поможете!