Сессия по загрузке PHP

Я пытаюсь создать индикатор выполнения загрузки с PHP. Я увидел новую функцию PHP 5.4: загрузить сессию прогресса .

Это мой HTML-код:

<form id="upload" action="ajax/progress.php" method="POST" enctype="multipart/form-data"> <input type="hidden" name="<?php echo ini_get("session.upload_progress.name"); ?>" value="dupload" /> <input id="file1" type="file" name="file1" /> <input class="btn primary" type="submit" value="Upload" /> </form> 

И это progress.php:

 <?php session_start(); $key = ini_get("session.upload_progress.prefix") . 'dupload'; if (!empty($_SESSION[$key])){ $current = $_SESSION[$key]["bytes_processed"]; $total = $_SESSION[$key]["content_length"]; echo $current < $total ? ceil($current / $total * 100) : 100; } else { var_dump($_SESSION); var_dump($_FILES); } 

AJAX:

 $('#upload').submit(function () { interval_id = setInterval(function () { $.ajax({ url: "ajax/progress.php6", type: "POST", success: function (data) { console.log(data); } }); }, 200); return false; }); 

Все настройки ini правильные. (сеанс включен, имя и префикс верны)

Я всегда получаю пустой массив сеансов. Что не так?

Благодаря!

Не удалось разобраться, поэтому я использовал XMLHTTPREQUEST «прогресс», и это сработало хорошо. Благодаря!

Это невозможно в одном запросе POST, вы можете выполнять запросы AJAX и читать сеанс во время загрузки файла. После загрузки файла ключ session.upload_progress.name удаляется, поэтому вы получаете пустой массив.

Я думаю, это потому, что ваша форма не отправляется, так как вы возвращаете false в

 $('#upload').submit(function () { interval_id = setInterval(function () { $.ajax({ url: "ajax/progress.php6", type: "POST", success: function (data) { console.log(data); } }); }, 200); return false; }); 

и он инициализирует интервал, поэтому страница всегда возвращает значение null, поскольку ничего не загружается. Попробуйте использовать http://www.malsup.com/jquery/form , он представляет форму