рд╡рд░реНрддрдорд╛рди рдореЗрдВ, рдлрд╝рд╛рдЗрд▓ рдбрд╛рдЙрдирд▓реЛрдб рдХреА рдкреНрд░рдЧрддрд┐ рдХрд╛ рдирд┐рд░реНрдзрд╛рд░рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдИ рд╡рд┐рдХрд▓реНрдк рд╣реИрдВ: рдХреНрд▓рд╛рдЗрдВрдЯ рддрдХрдиреАрдХреЛрдВ рдФрд░ рд╕рд░реНрд╡рд░ рд╡рд╛рд▓реЗ рджреЛрдиреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ред рдХреНрд▓рд╛рдЗрдВрдЯ рддрдХрдиреАрдХ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдлреНрд▓реИрд╢ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕реНрд╡рдлрд╝реВрдк рд▓реЛрдб рд╣реИ, рд╕рд░реНрд╡рд░ рддрдХрдиреАрдХ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг nginx_uploadprogress_module рд╣реИред
PHP рдХреА рдЖрдЧрд╛рдореА рд░рд┐рд▓реАрдЬ рд╣рдореЗрдВ рдПрдХ рдлрд╝рд╛рдЗрд▓ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдиреЗ рдХреА рдкреНрд░рдЧрддрд┐ рдХрд╛ рдирд┐рд░реНрдзрд╛рд░рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рджреЗрд╢реА рдЙрдкрдХрд░рдг рдХреЗ рд░реВрдк рдореЗрдВ рдПрдХ рдЙрдкрд╣рд╛рд░ рдХреЗ рд╕рд╛рде рдкреНрд░рд╕реНрддреБрдд рдХрд░рддреА рд╣реИред
рд╣рдо рдЙрд╕рд╕реЗ рдирд┐рдкрдЯ рд▓реЗрдВрдЧреЗред
рдЖрд░рд╕реА рдЪрд░рдг рдореЗрдВ PHP рдЕрднреА рднреА рд╣реИ, рд▓реЗрдХрд┐рди рдЬрд▓реНрдж рд╣реА рдпрд╣ рд╕рдорд░реНрдкрд┐рдд рд╕рд░реНрд╡рд░реЛрдВ, рд╡реАрдбреАрдПрд╕ рдФрд░ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рд╕рд╛рд╣рд╕реА рд╣реЛрд╕реНрдЯрд┐рдВрдЧ рдкрд░ рджрд┐рдЦрд╛рдИ рджреЗрдЧрд╛ред рдХрд┐рд╕реА рднреА рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рдЕрдирд┐рд╢реНрдЪрд┐рдд рднрд╡рд┐рд╖реНрдп рдореЗрдВ, PHP 5.4 рдореБрдЦреНрдп рд╢рд╛рдЦрд╛ рдмрди рдЬрд╛рдПрдЧреА, рдФрд░ PHP 5.3 рдХреЛ рдкрджрд╛рд╡рдирдд рдШреЛрд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
рдЖрдЗрдП рдлрд╛рд░реНрдо рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рдХрд░реЗрдВ:
<form action="" method="POST" enctype="multipart/form-data"> <input type="hidden" name="<?=ini_get("session.upload_progress.name")?>" value="uniqueValue" /><br /> <input type="file" name="file" /><br /> <input type="submit" /> </form>
рдПрдХрдорд╛рддреНрд░ рд╕реНрдерд╛рди рдЬреЛ рдЗрд╕рдореЗрдВ рдЙрд▓реНрд▓реЗрдЦрдиреАрдп рд╣реИ, PHP_SESSION_UPLOAD_PROGRESS (рдЬреЛ рдмрджрд▓ рд╕рдХрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЗрд╕реЗ рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдпрд╣рд╛рдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ) рдирд╛рдо рдХреЗ рд╕рд╛рде рдПрдХ рдЫрд┐рдкрд╛ рд╣реБрдЖ рдХреНрд╖реЗрддреНрд░ рд╣реИред рдФрд░ рдХреЛрдИ рдЕрдиреВрдард╛ рдореВрд▓реНрдпред
рдлрд╝реЙрд░реНрдо рдХреЛ рд▓реИрдВрдбрд┐рдВрдЧ рдкреГрд╖реНрда рдкрд░ iframe рдореЗрдВ рд░рдЦреЗрдВред
рдФрд░ рд╣рдордиреЗ рд▓реЛрдб рдХреА рдкреНрд░рддрд┐рд╢рддрддрд╛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдкрдиреА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╡рд╣рд╛рдВ рд░рдЦреА:
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script> <script> $(function() { setInterval(function() { $.get('?ajax', function(data) { $('#ajax').html(data); }); }, 500); }); </script> <div id="ajax"></div>
рдПрдХ рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдХреНрд╡реЗрд░реА рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ рдХреЛрдб рдХреЛ рдХрдо рдХрд░рдиреЗ рдФрд░ рдЗрд╕рдХреА рдкрдардиреАрдпрддрд╛ рдореЗрдВ рд╕реБрдзрд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП jQuery рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ред
рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЬреЛ рдХреБрдЫ рднреА рд╣рдореЗрдВ рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдЕрдиреБрд░реЛрдзреЛрдВ рд╕реЗ рдорд┐рд▓рддрд╛ рд╣реИ, рдореИрдВ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рдЕрдЬрд╛рдХреНрд╕ рдХреЗ рд╕рд╛рде рдмреНрд▓реЙрдХ рдореЗрдВ рдЖрдЙрдЯрдкреБрдЯ рдХрд░рддрд╛ рд╣реВрдВред
рдФрд░ рдЕрдВрддрд┐рдо рднрд╛рдЧ рд╕рд░реНрд╡рд░-рд╕рд╛рдЗрдб рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдЕрдиреБрд░реЛрдз рд╣реИрдВрдбрд▓рд░ рд╣реИ:
if (isset($_SESSION["upload_progress_uniqueValue"])) { $progress = $_SESSION["upload_progress_uniqueValue"]; $percent = round(100 * $progress['bytes_processed'] / $progress['content_length']); echo "Upload progress: $percent%<br /><pre>" . print_r($progress, 1) . '</pre>'; } else { echo 'no uploading'; }
рдпрд╣ рдПрдХ рдбреАрдмрдЧрд┐рдВрдЧ рд╡рд┐рдХрд▓реНрдк рд╣реИ, рдФрд░ рдЗрд╕рдореЗрдВ рд╡рд╣ рдбреЗрдЯрд╛ рд╢рд╛рдорд┐рд▓ рд╣реИ рдЬреЛ рдХрд┐рд╕реА рдХрд╛рд░реНрдпрд╢реАрд▓ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЗ рд▓рд┐рдП рдЕрдирд╛рд╡рд╢реНрдпрдХ рд╣реИред рд▓реЗрдХрд┐рди рд╣рдо рд╕рд┐рд░реНрдл рдЙрдиреНрд╣реЗрдВ рджреЗрдЦрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдФрд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рднреА рдбрдВрдк рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред
рд╣рдо рдЗрд╕реЗ рдПрдХ рдкреГрд╖реНрда рдкрд░ рд░рдЦрддреЗ рд╣реИрдВ, рдХреЛрдб рдЫреЛрдЯрд╛ рд╣реИ (рдЖрдзрд╛ рдкреГрд╖реНрда) рдФрд░ рдЗрд╕рд▓рд┐рдП рдореИрдВ рдЗрд╕реЗ рдпрд╣реАрдВ рдкреЛрд╕реНрдЯ рдХрд░реВрдВрдЧрд╛:
<?php session_start(); $uploadName = 'test';
рд▓реЗрдЖрдЙрдЯ рдЕрдорд╛рдиреНрдп рд╣реИ - рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдпрдерд╛рд╕рдВрднрд╡ рдХрдоред
рд╕реНрдкрд╖реНрдЯрддрд╛ рдХреЗ рд▓рд┐рдП рд╕реНрдХреНрд░реАрдирд╢реЙрдЯ:

рд▓реЗрдЦ рдмреБрдирд┐рдпрд╛рджреА рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдкреНрд░рд▓реЗрдЦрди рдореЗрдВ рдкрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЪреВрдВрдХрд┐ рдпрд╣ рд╡рд░реНрддрдорд╛рди рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рджрд╕реНрддрд╛рд╡реЗрдЬ рдореЗрдВ рдирд╣реАрдВ рд╣реИ, рдФрд░ рдкреБрд╕реНрддрдХреЛрдВ рдореЗрдВ, рд╕рднреА рдЕрдзрд┐рдХ, рдореИрдВрдиреЗ рд╕реЛрдЪрд╛ рдХрд┐ рдпрд╣ PHP рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рд╣реЛрдЧрд╛ред