php does not have the real-time upload progress bar function. If we want to have this function, we usually use ajax to achieve it. , but PHP provides an APC, which can implement the upload progress bar function with PHP configuration.
Mainly targeted at applications on windows.
1. The server must support the apc extension. If there is no such extension, downloading an extension requires php.5.2 or above.
2. Configure apc related configuration and restart apache
The code is as follows
extension=php_apc.dll
apc.rfc1867 = on
apc.max_file_size = 1000M
upload_max_filesize = 1000M
post_max_size = 1000M
Explanation: As for the size of the parameters, it depends on the project that requires apc.max_file_size. To set the size of the uploaded file supported by apc, it requires apc.max_file_size<=upload_max_filesize Andapc.max_file_size <=post_max_size.Restart apache to achieve apc support.
3. Use phpinfo(); in the code to check whether the apc extension is installed.
4. The following is the implementation code:
getprogress.php
The code is as follows
<?php session_start(); if(isset($_GET['progress_key'])) { $status = apc_fetch('upload_'.$_GET['progress_key']); echo ($status['current']/$status['total'])*100; } ?> upload.php PHP Code <?php $id = $_GET['id']; ?> <form enctype="multipart/form-data" id="upload_form" action="target.php" method="POST"> <input type="hidden" name="APC_UPLOAD_PROGRESS" id="progress_key" value="<?php echo $id?>"/> <input type="file" id="test_file" name="test_file"/><br/> <input onclick="window.parent.startProgress(); return true;" type="submit" value="上传"/> </form>
target.php
The code is as follows
<?php set_time_limit(600); if($_SERVER['REQUEST_METHOD']=='POST') { move_uploaded_file($_FILES["test_file"]["tmp_name"], dirname($_SERVER['SCRIPT_FILENAME'])."/UploadTemp/" . $_FILES["test_file"]["name"]);//UploadTemp文件夹位于此脚本相同目录下 echo "<p>上传成功</p>"; } ?>
index.php
The code is as follows
<?php $id = md5(uniqid(rand(), true)); ?> <html> <head><title>上传进度</title></head> <body> <script src="js/jquery-1.4.4.min.js" language="javascript"></script> <script language="javascript"> var proNum=0; var loop=0; var progressResult; function sendURL() { $.ajax({ type : 'GET', url : "getprogress.php?progress_key=<?php echo $id;?>", async : true, cache : false, dataType : 'json', data: "progress_key=<?php echo $id;?>", success : function(e) { progressResult = e; proNum=parseInt(progressResult); document.getElementById("progressinner").style.width = proNum+"%"; document.getElementById("showNum").innerHTML = proNum+"%"; if ( proNum < 100){ setTimeout("getProgress()", 100); } } }); } function getProgress(){ loop++; sendURL(); } var interval; function startProgress(){ document.getElementById("progressouter").style.display="block"; setTimeout("getProgress()", 100); } </script> <iframe id="theframe" name="theframe" src="upload.php?id=<?php echo $id; ?>" style="border: none; height: 100px; width: 400px;" > </iframe> <br/><br/> <div id="progressouter" style="width: 500px; height: 20px; border: 6px solid red; display:none;"> <div id="progressinner" style="position: relative; height: 20px; background-color: purple; width: 0%; "></div> </div> <div id='showNum'></div><br> <div id='showNum2'></div> </body> </html>
The above is the method to share with you how to use APC to implement the real-time upload progress bar function in PHP. I hope it will be helpful to everyone's learning.