Home  >  Article  >  Backend Development  >  Code for two implementation methods of PHP file upload progress bar_PHP tutorial

Code for two implementation methods of PHP file upload progress bar_PHP tutorial

WBOY
WBOYOriginal
2016-07-21 15:53:57721browse

There are two methods that I know of at present. One is to use the APC extension module written by Rasmus Lerdorf, the founder of PHP (http://pecl.php.net/package/apc). The other method is to use the PECL extension. Module uploadprogress implementation (http://pecl.php.net/package/uploadprogress) I will give two examples of separate implementations for reference. For more flexible applications, you can modify them according to your own needs.

APC implementation method:

Install APC, refer to the official documentation for installation, you can use the PECL module installation method to quickly and easily, not explained here
Configure php.ini, set the parameters apc.rfc1867= 1. Enable APC to support the upload progress bar function. There are instructions in the APC source code documentation
Code example:

Copy the code The code is as follows:

if ($_SERVER['REQUEST_METHOD'] == 'POST') { //Upload request
$status = apc_fetch('upload_' . $_POST['APC_UPLOAD_PROGRESS']);
$status['done'] = 1;
echo json_encode($status); //Output to the ajax call in the client page, please find relevant documents yourself
exit;
} elseif (isset( $_GET['progress_key'])) { //Read upload progress
$status = apc_fetch('upload_'.$_GET['progress_key']);
echo json_encode($status);
exit;
} else {
//Other codes, such as upload forms, etc.
}

uploadprogress module implementation method:

Use the PECL module installation method to install Set uploadprogress.file.filename_template = “/tmp/upd_%s.txt” in
php.ini of this module
Code example:
Copy code The code is as follows:

if ($_SERVER['REQUEST_METHOD']=='POST') {
if (is_uploaded_file($_FILES['upfile']['tmp_name']) ) {
$upload_dir = 'your_path/';
$ext = strrchr($_FILES['video']['name'], '.');
$sessid = $_POST['UPLOAD_ID ENTIFIER '] ;
$tmpfile = $upload_dir . $sessid;
$sessfile = $upload_dir . $sessid .$ext;
if (move_uploaded_file($_FILES['upfile'] ['tmp_name'], $tmpfile)) {
                                                                                                             >} elseif (!empty( $_GET['sessid'])) {
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
header("Cache-Control: no-store, no-cache, must-revalidate");
header("Cache-Control: post -check=0, pre-check=0", false);
header("Pragma: no-cache");
header("Content-Type:text/html;charset=UTF-8") ;

$unique_id = $_GET['sessid'];
$uploadvalues ​​= uploadprogress_get_info($unique_id);

if (is_array($uploadvalues)) {
echo json_encode ($uploadvalues);
} else {
} //Reading progress failed, additional processing logic
}

} else {
} //Display the upload form
}

www.bkjia.comtruehttp: //www.bkjia.com/PHPjc/318577.htmlTechArticleAt present, there are two methods I know. One is to use the APC extension module written by Rasmus Lerdorf, the founder of PHP. Implementation (http://pecl.php.net/package/apc), another method is to use PECL extension...
Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn