PHP 大文件上传进度条实现

  目前我知道的方法有两种,一种是使用PHP的创始人 Rasmus Lerdorf 写的APC扩展模块来实现(,另外一种方法是使用PECL扩展模块uploadprogress实现( 我这里举两个分别实现的例子供参考,更灵活的应用根据自己需要来修改。


  • 安装APC,参照官方文档安装,可以使用PECL模块安装方法快速简捷,这里不说明
  • 配置php.ini,设置参数 apc.rfc1867=1 ,使APC支持上传进度条功能,在APC源码说明文档里面有说明
  • 代码范例:
    [coolcode lang=”php”]
    if ($_SERVER[‘REQUEST_METHOD’] == ‘POST’) { //上传请求
    $status = apc_fetch(‘upload_’ . $_POST[‘APC_UPLOAD_PROGRESS’]);
    $status[‘done’] = 1;
    echo json_encode($status); //输出给用户端页面里的ajax调用,相关文档请自己寻找
    } elseif (isset($_GET[‘progress_key’])) { //读取上传进度
    $status = apc_fetch(‘upload_’.$_GET[‘progress_key’]);
    echo json_encode($status);
    } else {

  uploadprogress 模块实现方法:

  • 使用PECL模块安装方法安装该模块
  • php.ini里面设置 uploadprogress.file.filename_template = “/tmp/upd_%s.txt”
  • 代码范例:
    [coolcode lang=”php”]
    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”);

    $unique_id = $_GET[‘sessid’];
    $uploadvalues = uploadprogress_get_info($unique_id);

    if (is_array($uploadvalues)) {
    echo json_encode($uploadvalues);
    } else {

    } else {

You can follow any responses to this entry through the RSS 2.0 feed. You can leave a response, or trackback from your own site.
19 Responses
  1. jason says:


  2. Michael says:

    [Comment ID #30165 Will Be Quoted Here]


  3. Fisher says:


  4. Michael says:

    [Comment ID #30207 Will Be Quoted Here]


  5. Fisher says:



  6. kakashilw says:


  7. Michael says:

    [Comment ID #30954 Will Be Quoted Here]

    coolcode 好像作者网站是 ,是个牛人。

  8. kakashilw says:


  9. Time is the great author, she can write the end of the future. -Chaplin

  10. Love is patient; love is kind; love is not envious pr boastful or arroga nt or rude. It does not insist on its own way; it is not irritable or re sentful; it does not rejoice in wrongdoing, but rejoices in the truth. I t bears all things, hopes all things, endures all things. Love never ends.

  11. Hallelujah! For the Lord our God the Almighty reigns. The kingdom of the world has become the kingdom of our Lord and of his Messiah, and he wil l reign forever and ever.

  12. A man can fail many times, but he isn’t a failure until he begins to blame somebody else.

    J. Burroughs. Averican naturalist

  13. ing forward to read other articles.

  14. To improve their ability, to benefit oneself and him. Have the ability to do practical things won’t talk any benefits after all. The end of the story always return fully loaded, is a nurse nomination.

Leave a Reply

Your email address will not be published. Required fields are marked *

To prove you're a person (not a spam script), type the security word shown in the picture. Click on the picture to hear an audio file of the word.
Anti-spam image