Как отследить прогресс загрузки файла php?

html

<?
session_start();
?>

<form enctype="multipart/form-data" method="post" id="uploadVideo">

<input type="hidden" id="progress" name="<?=ini_get("session.upload_progress.name"); ?>" value="123">

<input type="file" name="video[]" accept="video/avi, video/mp4, video/flv, video/mov, video/mkv, video/ogg, video/wmv, video/webm, video/ogv">

<button type="button" name="send" class="uploadVideoBtn">Загрузить</button>
</form>

ajax

$.ajax({
url: url
type: 'post',
dataType: 'json',
data: formData,
async: true,
cache: false,
contentType: false,
processData: false,
success: function(json){
if(typeof json.success !== 'undefined'){
$.jGrowl(json.success);
} else if(typeof json.error !== 'undefined'){
$.jGrowl(json.error);
}
},
error: function(json, jqXHR, status, errorThrown, exception){
alert(JSON.stringify(json));
return $.jGrowl('ОШИБКА AJAX запроса: ' + status, jqXHR, json);
}
});

php

session_start();

$key = ini_get("session.upload_progress.prefix") . $_POST[ini_get("session.upload_progress.name")];


if(isset($_SESSION[$key])){
echo json_encode(['error' => 'yes'], JSON_UNESCAPED_UNICODE);
exit();
}
else{
echo json_encode(['error' => 'no'], JSON_UNESCAPED_UNICODE); // всегда выводит no
exit();
}


if(!isset($_FILES['video']) || empty($_FILES['video'])){
echo json_encode(['error' => 'Не выбрано видео для загрузки'], JSON_UNESCAPED_UNICODE);
exit();
}

$uploaddir = $url;
if(!is_dir( $uploaddir)) mkdir($uploaddir, 0700);

$files = array();
foreach($_FILES['video'] as $k => $l) {
foreach($l as $i => $v) {
$files[$i][$k] = $v;
}
}
$_FILES['video'] = $files;

$total_files = count($files);
$maxTotalFiles = 1;
$maxFileLimit = 52428800;
if($total_files > $maxTotalFiles){
echo json_encode(['error' => 'Загружать можно только '.$maxTotalFiles.' файлов за раз'], JSON_UNESCAPED_UNICODE);
exit;
}
for($key = 0; $key < $total_files; $key++){
if(!isset($file['name'][$key])){
echo json_encode(['error' => 'Попробуйте сначала переименовать файл'], JSON_UNESCAPED_UNICODE);
exit;
}
if($file['size'][$key] > $maxFileLimit){
echo json_encode(['error' => 'Максимальный размер загружаемого файла - 50 МБ' ], JSON_UNESCAPED_UNICODE);
exit;
}

$ext = pathinfo($file['name'][$key], PATHINFO_EXTENSION);
$types = array('avi', 'mp4', 'flv', 'mov', 'mkv', 'ogg', 'wmv', 'webm', 'ogv');

if(!in_array($ext, $types)){
echo json_encode(['error' => 'Разрешено загружать файлы только в форматах [.avi, .mp4, .flv, .mov, .mkv, .ogg, .wmv, .webm, .ogv]'], JSON_UNESCAPED_UNICODE);
exit;
}

$fileName = date('YmdHis').'_'.translit($file['name'][$key]);

if(move_uploaded_file($file['tmp_name'][$key], $uploaddir.$fileName)){
$fileHumanName = $file['name'][$key];


}
else {
echo json_encode(['error' => "Ошибка загрузки, повторите снова"], JSON_UNESCAPED_UNICODE);
exit;
}
}

echo json_encode(['success' => "Видео [$fileHumanName] загружено"],  JSON_UNESCAPED_UNICODE);

Ответы (0 шт):