Не могу разобраться, как узнать количество загруженных файлов на сервер через js.
В php разобрался - их количество записывается в файл, с каждым загруженным файлом число увеличивается на 1. Файлы загружаются через ифрейм, без перезагрузки страницы.
В js через setInterval делаю запрос к php файлу, который отдает информацию о содержимом файле, который содержит количество загруженных файлов. Но запрос происходит тогда, когда все файлы будут загружены. Даже если напрямую обращаться к файлу с количеством загруженных файлов, запрос будет после того, когда будут загружены файлы. Запросы делаю через $.get (jquery).
Если с помощью js это сделать нельзя, то нужно смотреть в сторону AS, верно? Там вроде все это проще можно проделать.
================
Что делается:
JS:function check () {
setInterval(function () {
$.get('/check.php, function (res) {
console.log('progress', res);
});
}, 1000);
}
function send () {
var iframe = '<iframe name="tname" id="tname" style="display: none;"></iframe>';
$('body').append(iframe);
$('form').submit(); // у формы таргет на ифрейм
}
check();
send();
PHP:
Файл, куда загружаются файлы:
<?
$finfo = 'files_amount.txt';
$filesAmount = 0;
foreach ($files as $file) { // $files - сериализованный массив $_FILES
sleep(3); // для проверки
$temp_path = '/temp/'.$file['name'];
move_uploaded_file($file['tmp_name'], $temp_path);
$filesAmount += 1;
file_put_contents($finfo, $filesAmount);
}
?>
Файл проверки (check.php):
<?
$finfo = 'files_amount.txt';
echo file_get_contents($finfo);
?>
===============
Попробовал обернуть send() в setTimeout, запросы на проверку отправлялись, но когда приходило время выполнить метод send() - запросы отправляться перестали.