• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    PHP大文件切割上传并带进度条功能示例

    本文实例讲述了PHP大文件切割上传并带进度条功能。分享给大家供大家参考,具体如下:

    前面一篇介绍了PHP大文件切割上传功能,这里再来进一步讲解PHP大文件切割上传并带进度条功能。

    项目结构图:

    14-slice-upload-fix.html文件:

    !DOCTYPE html>
    html>
    head>
      meta charset="utf-8">
      meta http-equiv="X-UA-Compatible" content="IE=edge">
      title>大文件切割上传带进度条/title>
      link rel="stylesheet" href="">
    script>
    var xhr = new XMLHttpRequest();//xhr对象
    var clock = null;
    function selfile(){
      clock = window.setInterval(sendfile,1000);
    }
    var sendfile = (function (){
      const LENGTH = 1024 * 1024 * 10;//每次上传的大小
      var start = 0;//每次上传的开始字节
      var end = start + LENGTH;//每次上传的结尾字节
      var sending = false;//表示是否正在上传
      var fd = null;//创建表单数据对象
      var blob = null;//二进制对象
      var percent = 0;
      return (function (){
        //如果有块正在上传,则不进行上传
        if(sending == true){
          return;
        }
        var file = document.getElementsByName('video')[0].files[0];//文件对象
        //如果sta>file.size,就结束了
        if(start > file.size){
          clearInterval(clock);
          return;
        }
        blob = file.slice(start,end);//根据长度截取每次需要上传的数据
        fd = new FormData();//每一次需要重新创建
        fd.append('video',blob);//添加数据到fd对象中
        up(fd);
        //重新设置开始和结尾
        start = end;
        end = start + LENGTH;
        sending = false;//上传完了
        //显示进度条
        percent = 100 * start/file.size;
        if(percent>100){
          percent = 100;
        }
        document.getElementById('bar').style.width = percent + '%';
        document.getElementById('bar').innerHTML = parseInt(percent)+'%';
      });
    })();
    function up(fd){
      xhr.open('POST','13-slice-upload.php',false);
      xhr.send(fd);
    }
    /script>
    style>
      #progress{
        width:500px;
        height:30px;
        border:1px solid green;
      }
      #bar{
        width:0%;
        height:100%;
        background-color: green;
      }
    /style>
    /head>
    body>
      h1>大文件切割上传带进度条/h1>
      div id="progress">
        div id="bar">/div>
      /div>
      input type="file" name="video" onchange="selfile();" />
    /body>
    /html>
    
    

    13-slice-upload.php文件:

    ?php
    /**
     * 大文件切割上传,把每次上传的数据合并成一个文件
     * @author webbc
     */
    $filename = './upload/upload.wmv';//确定上传的文件名
    //第一次上传时没有文件,就创建文件,此后上传只需要把数据追加到此文件中
    if(!file_exists($filename)){
      move_uploaded_file($_FILES['video']['tmp_name'],$filename);
    }else{
      file_put_contents($filename,file_get_contents($_FILES['video']['tmp_name']),FILE_APPEND);
    }
    ?>
    
    

    运行结果图:

    更多关于PHP相关内容感兴趣的读者可查看本站专题:《php文件操作总结》、《PHP目录操作技巧汇总》、《PHP常用遍历算法与技巧总结》、《PHP数据结构与算法教程》、《php程序设计算法总结》及《PHP网络编程技巧总结》

    希望本文所述对大家PHP程序设计有所帮助。

    您可能感兴趣的文章:
    • PHP大文件分块上传功能实例详解
    • PHP大文件切割上传功能实例分析
    • PHP大文件分片上传的实现方法
    • PHP大文件分割上传 PHP分片上传
    • PHP搭建大文件切割分块上传功能示例
    • php上传大文件设置方法
    • apache+php上传大文件以上传100M为例
    • 利用discuz实现PHP大文件上传应用实例代码
    • PHP大文件分割分片上传实现代码
    上一篇:PHP大文件切割上传功能实例分析
    下一篇:PHP使用HTML5 FileApi实现Ajax上传文件功能示例
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    PHP大文件切割上传并带进度条功能示例 PHP,大,文件,切割,上传,并,