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

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

    本文实例讲述了PHP大文件分块上传功能。分享给大家供大家参考,具体如下:

    前端代码

    使用file.slice将文件进行分割,然后分别进行异步上传。

    !DOCTYPE html>
    html lang="zh-cn">
     head>
      meta charset="utf-8">
      meta http-equiv="X-UA-Compatible" content="IE=edge">
      meta name="viewport" content="width=device-width, initial-scale=1">
      title>%= title %>/title>
      !-- zui -->
      link rel="stylesheet" href="http://zui.sexy/dist/css/zui.min.css" rel="external nofollow" >
     /head>
     body>
      div class="container" style="margin-top: 30px;">
        form class="form-inline" method="post" enctype="multipart/form-data">
         div class="form-group">
          input type="file" id="fileBig" class="form-control">
         /div>
         button type="submit" class="btn btn-primary">提交/button>
        /form>
      /div>
      !-- ZUI Javascript 依赖 jQuery -->
      script src="http://zui.sexy/assets/jquery.js">/script>
      !-- ZUI 标准版压缩后的 JavaScript 文件 -->
      script src="http://zui.sexy/dist/js/zui.min.js">/script>
      script type="text/javascript">
        $('form').submit(function() {
          let file = $(":file")[0].files[0];
          let fileName = file.name;
          let fileSize = file.size;
          console.log('fileSize',fileSize);
          let blockSize = 0.9*1024*1024;
          let num = Math.ceil(fileSize/blockSize);
          let start = 0;
          let end = 0;
          for(let i=1;i=num;i++){
            end = blockSize*i;
            if(end > fileSize){
              end = fileSize;
            }
            let block = file.slice(start,end);
            start = end;
            let fd = new FormData();
            fd.append('block',block);
            fd.append('name',fileName);
            fd.append('total',num);
            fd.append('index',i);
            $.ajax({
              url:"upload.php",
              type:"POST",
              data:fd,
              async:true,
              processData:false,
              contentType:false,
              success:(res)=>{
                console.log('res_'+i+":");
                console.log(res);
              }
            })
          }
          return false;
        });
      /script>
     /body>
    /html>
    
    

    后端代码

    在所有的文件上传成功之后,合并生成原来的大文件

    ?php
    $name = $_POST['name'];
    $index = $_POST['index'];
    $total = $_POST['total'];
    echo "name:".$name.PHP_EOL;
    echo "index:".$index.PHP_EOL;
    echo "total:".$total.PHP_EOL;
    move_uploaded_file($_FILES['block']['tmp_name'],'upload/'.$name."_".$index);
    $list = scandir('upload');
    $num = count($list)-2;
    echo "cur_num:".$num.PHP_EOL;
    if($num == $total){
      echo "upload done".PHP_EOL;
      echo $cmd = "cat upload/'{$name}_'* > upload/'{$name}'";
      shell_exec($cmd);
    }
    
    

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

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

    您可能感兴趣的文章:
    • PHP大文件切割上传并带进度条功能示例
    • PHP大文件切割上传功能实例分析
    • PHP大文件分片上传的实现方法
    • PHP大文件分割上传 PHP分片上传
    • PHP搭建大文件切割分块上传功能示例
    • php上传大文件设置方法
    • apache+php上传大文件以上传100M为例
    • 利用discuz实现PHP大文件上传应用实例代码
    • PHP大文件分割分片上传实现代码
    上一篇:PHP商品秒杀问题解决方案实例详解【mysql与redis】
    下一篇:PHP中__set()实例用法和基础讲解
  • 相关文章
  • 

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

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

    PHP大文件分块上传功能实例详解 PHP,大,文件,分块,上传,功能,