Home  >  Article  >  Backend Development  >  Sample code for two implementation methods of PHP file upload progress bar

Sample code for two implementation methods of PHP file upload progress bar

怪我咯
怪我咯Original
2017-07-07 09:47:361792browse

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 Use the PECL extension module uploadprogress to implement (http://pecl.php.net/package/uploadprogress). Here are two examples of separate implementations for reference. For more flexible applications, you can modify them according to your own needs.

APC implementation method:

InstallationAPC, refer to the official documentation for installation. You can use the PECL module installation method to quickly and easily.
Configuring php.ini is not explained here. Set the parameter apc.rfc1867=1 so that APC supports the upload progress bar function. There is a description in the APC source code documentation
Code example:

The code is as follows:

if ($_SERVER['REQUEST_METHOD'] == 'POST') {  //上传请求  
    $status = apc_fetch('upload_' . $_POST['APC_UPLOAD_PROGRESS']);  
    $status['done'] = 1;  
    echo json_encode($status);  //输出给用户端页面里的ajax调用,相关文档请自己寻找  
    exit;  
} elseif (isset($_GET['progress_key'])) {   //读取上传进度  
    $status = apc_fetch('upload_'.$_GET['progress_key']);  
    echo json_encode($status);  
    exit;  
} else {  
    //其他代码,比如上传表单等  
}

Uploadprogress module implementation method:

Use the PECL module installation method to install the module
Set uploadprogress.file.filename_template = “/tmp/upd_% in php.ini s.txt”
Code example:

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_IDENTIFIER'] ;  
        $tmpfile    = $upload_dir . $sessid;   
        $sessfile   = $upload_dir . $sessid .$ext;  
        if (move_uploaded_file($_FILES['upfile']['tmp_name'],$tmpfile)) {  
            //上传成功  
        } else {  
            //上传失败  
    } else {  
        //上传错误  

} 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 {  
        //读取进度失败,另外处理逻辑  
    }  

} else {  
    //显示上传表单  
}

The above is the detailed content of Sample code for two implementation methods of PHP file upload progress bar. For more information, please follow other related articles on the PHP Chinese website!

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