Home  >  Article  >  Backend Development  >  Specific implementation method of PHP file upload progress bar_PHP tutorial

Specific implementation method of PHP file upload progress bar_PHP tutorial

WBOY
WBOYOriginal
2016-07-15 13:29:22847browse

When we write the file upload code, we also need to consider an important implementation feature, which is the progress bar required for file upload. At present, I know Here are two examples of separate implementations for reference. For more flexible applications, you can modify them according to your own needs.

How to implement the PHP file upload progress bar of APC:

Install APC, refer to the official documentation for installation, you can use the PECL module installation method to quickly and easily, not explained here

Configuring php.ini, Set the parameter apc.rfc1867=1 to enable APC to support the upload progress bar function. There are instructions in the APC source code documentation

Code example:

<ol class="dp-xml">
<li class="alt"><span><span>if ($_SERVER['REQUEST_METHOD'] == 'POST') {  //上传请求  </span></span></li>
<li class="">
<span>    $</span><span class="attribute"><font color="#ff0000">status</font></span><span> = </span><span class="attribute-value"><font color="#0000ff">apc_fetch</font></span><span>('upload_' . $_POST['APC_UPLOAD_PROGRESS']);  </span>
</li>
<li class="alt"><span>    $status['done'] = 1;  </span></li>
<li class=""><span>    echo json_encode($status);  //输出给用户端页面里的ajax调用,相关文档请自己寻找  </span></li>
<li class="alt"><span>    exit;  </span></li>
<li class=""><span>} elseif (isset($_GET['progress_key'])) {   //读取上传进度  </span></li>
<li class="alt">
<span>    $</span><span class="attribute"><font color="#ff0000">status</font></span><span> = </span><span class="attribute-value"><font color="#0000ff">apc_fetch</font></span><span>('upload_'.$_GET['progress_key']);  </span>
</li>
<li class=""><span>    echo json_encode($status);  </span></li>
<li class="alt"><span>    exit;  </span></li>
<li class=""><span>} else {  </span></li>
<li class="alt"><span>    //其他代码,比如上传表单等  </span></li>
<li class=""><span>} </span></li>
</ol>

uploadprogress module implementation method:

Use PECL module installation method Install the PHP file upload progress bar implementation method of this module

Set uploadprogress.file.filename_template = “/tmp/upd_%s.txt” in php.ini

Code example:

<ol class="dp-xml">
<li class="alt"><span><span>if($_SERVER['REQUEST_METHOD']=='POST') {  </span></span></li>
<li class=""><span>    if (is_uploaded_file($_FILES['upfile']['tmp_name'])) {  </span></li>
<li class="alt">
<span>        $</span><span class="attribute"><font color="#ff0000">upload_dir</font></span><span> = </span><span class="attribute-value"><font color="#0000ff">'your_path/'</font></span><span>;  </span>
</li>
<li class="">
<span>        $</span><span class="attribute"><font color="#ff0000">ext</font></span><span>         = </span><span class="attribute-value"><font color="#0000ff">strrchr</font></span><span>($_FILES['video']['name'], '.');  </span>
</li>
<li class="alt">
<span>        $</span><span class="attribute"><font color="#ff0000">sessid</font></span><span>      = $_POST['UPLOAD_IDENTIFIER'] ;  </span>
</li>
<li class="">
<span>        $</span><span class="attribute"><font color="#ff0000">tmpfile</font></span><span>     = $upload_dir . $sessid;    </span>
</li>
<li class="alt">
<span>        $</span><span class="attribute"><font color="#ff0000">sessfile</font></span><span>    = $upload_dir . $sessid .$ext;  </span>
</li>
<li class=""><span>        if (move_uploaded_file($_FILES['upfile']['tmp_name'],$tmpfile)) {  </span></li>
<li class="alt"><span>            //上传成功  </span></li>
<li class=""><span>        } else {  </span></li>
<li class="alt"><span>            //上传失败  </span></li>
<li class=""><span>    } else {  </span></li>
<li class="alt"><span>        //上传错误  </span></li>
<li class=""><span>          </span></li>
<li class="alt"><span>} elseif (!empty($_GET['sessid'])) {  </span></li>
<li class=""><span>    header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");  </span></li>
<li class="alt"><span>    header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");  </span></li>
<li class=""><span>    header("Cache-Control: no-store, no-cache, must-revalidate");  </span></li>
<li class="alt">
<span>    header("Cache-Control: </span><span class="attribute"><font color="#ff0000">post-check</font></span><span>=</span><span class="attribute-value"><font color="#0000ff">0</font></span><span>, </span><span class="attribute"><font color="#ff0000">pre-check</font></span><span>=</span><span class="attribute-value"><font color="#0000ff">0</font></span><span>", false);  </span>
</li>
<li class=""><span>    header("Pragma: no-cache");  </span></li>
<li class="alt">
<span>    header("Content-Type:text/html;</span><span class="attribute"><font color="#ff0000">charset</font></span><span>=</span><span class="attribute-value"><font color="#0000ff">UTF</font></span><span>-8");  </span>
</li>
<li class=""><span> </span></li>
<li class="alt">
<span>    $</span><span class="attribute"><font color="#ff0000">unique_id</font></span><span> = $_GET['sessid'];  </span>
</li>
<li class="">
<span>    $</span><span class="attribute"><font color="#ff0000">uploadvalues</font></span><span> = </span><span class="attribute-value"><font color="#0000ff">uploadprogress_get_info</font></span><span>($unique_id);  </span>
</li>
<li class="alt"><span> </span></li>
<li class=""><span>    if (is_array($uploadvalues)) {  </span></li>
<li class="alt"><span>        echo json_encode($uploadvalues);  </span></li>
<li class=""><span>    } else {  </span></li>
<li class="alt"><span>        //读取进度失败,另外处理逻辑  </span></li>
<li class=""><span>    }  </span></li>
<li class="alt"><span>      </span></li>
<li class=""><span>} else {  </span></li>
<li class="alt"><span>    //显示上传表单  </span></li>
<li class=""><span>} </span></li>
</ol>

The above are the two specific methods of PHP file upload progress bar that we introduced to you.


www.bkjia.comtruehttp: //www.bkjia.com/PHPjc/446391.htmlTechArticleWhen we write the file upload code, we also need to consider an important implementation function, that is, what is required for file upload progress bar. At present, I know that I will give two implementations separately...
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