• 大文件上传


    //  JS页面

    $("#but").click(function () {
        //创建formdata对象
        var fd=new FormData();
        //获取文件
        var file=document.getElementById("img").files[0];
      //  console.log(file);
        //配置大文件上传需要的参数
        var start=0;//开始
        var size=1024*1024;//大小
        var end=parseInt(start+size);//结束
        var blob;//定义一个小切片,用来表示每一个小切片
        var blob_num=1;//给每一个小切片定义一个编号
         blob=CutFile(file)//拿到被分割的小切片
         blob=sendFile(file);
        //执行文件分割
        function CutFile(file) {
            var blob=file.slice(start,end);//分割出来的其中一个小切片
            start=end;//第一次分割完的结束位置是第二次分割的开始位置
            //新的结束位置
            end=parseInt(start+size);
            return blob;//返回分割后的每一个小切片
        }
        //发送(源文件,切片文件)
        function sendFile() {
         fd.append("file",file);
         fd.append("file_name",file.name);
         fd.append("blob",blob);
         fd.append("blob_num",blob_num);
         fd.append("blob_count",Math.ceil(file.size/size));//总共有几个切片
            $.ajax(
                {
                    url:"upload.php",
                    type:"post",
                    dataType:"json",
                    data:fd,
                    processData:false,
                    contentType:false,
                    success:function (data) {
                       console.log(data);
                    }
                })
            //做一个判断
            if(start<file.size){
                //继续执行发送
                var t=setTimeout(function () {
                    //先让编号自增1
                    blob_num++;
                    // 然后重新获得
                    blob=CutFile(file);
                    //执行上传
                    sendFile(file,blob);
                },1000)
            }else{
                //终止发送
                clearTimeout(t)
            }
    
        }
    })


    //PHP页面 后台处理

    <?php
    //设置字符集
    header("Content-type:text/html;Charset=utf-8");
    //接收数据
    $data=$_POST;
    $file=$_FILES;
    echo json_encode($data);
    //执行上传
    $path='./img/'.$data['file_name'].'_'.$data['blob_num'];
    move_uploaded_file($file['blob']['tmp_name'],$path);
    //判断切片
    if($data['blob_num']==$data['blob_count']){
       $b='';
        //合成
        for($i=1;$i<=$data['blob_count'];$i++){
           $b.=file_get_contents('./img/'.$data['file_name'].'_'.$i);
        }
        file_put_contents('./img/'.$data['file_name'],$b);
    }
    ?>
     
  • 相关阅读:
    E4A易安卓3.6无需注册编译Release
    PHP中几种常用的网页跳转代码
    超详细教你重新封装GHO(ndeer和绿茶)教程
    程序员和编码员之间的区别
    迅闪三层下载游戏无速度
    POST注册DZ论坛或发帖
    解决局域网文件共享设置
    妻子 情人 红颜知己
    照片与同行元素居中的方法
    【转】SVN使用教程总结
  • 原文地址:https://www.cnblogs.com/chaihtml/p/10093271.html
Copyright © 2020-2023  润新知