• js大文件分割上传


    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" lang="zh-CN">
    <head>
    <title>分割大文件上传</title>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <style>
        #test{
            width: 200px;
            height: 100px;
            border: 1px solid green;
            display: none;
        }
        #img{
            width: 50px;
            height: 50px;
            display: none;
        }
        #upimg{
            text-align: center;
            font: 8px/10px '微软雅黑','黑体',sans-serif;
            width: 300px;
            height: 10px;
            border: 1px solid green;
        }
        #load{
            width: 0%;
            height: 100%;
            background: green;
            text-align: center;
        }
    </style>
    </head>
        <body>
            <form enctype="multipart/form-data" action="file.php" method="post">
                <!-- 
                <input type="file" name="pic" />
                <div id="img"></div>
                <input type="button" value="uploadimg" onclick="upimg();" /><br />
                -->
                <div id="upimg">
                    <div id="load"></div>
                </div>
                <input type="file" name="mof" multiple="multiple"/>
                <input type="button" value="uploadfile" onclick="upfile();" />
                <input type="submit" value="submit" />
            </form>
            <div id="test">
                测试是否DIV消失
            </div>
    <script type="text/javascript">
        var dom=document.getElementsByTagName('form')[0];
        dom.onsubmit=function(){
            //return false;
        }
        var xhr=new XMLHttpRequest();
        var fd;
        var des=document.getElementById('load');
        var num=document.getElementById('upimg');
        var file;
        const LENGTH=10*1024*1024;
        var start;
        var end;
        var blob;
        var pecent;
        var filename;
        //var pending;
        //var clock;
        function upfile(){
            start=0;
            end=LENGTH+start;
            //pending=false;
    
            file=document.getElementsByName('mof')[0].files[0];
            //filename = file.name;
            if(!file){
                alert('请选择文件');
                return;
            }
            //clock=setInterval('up()',1000);
            up();
    
        }
    
        function up(){
            /*
            if(pending){
                return;
            }
            */
            if(start<file.size){
                xhr.open('POST','file.php',true);
                //xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
                xhr.onreadystatechange=function(){
                    if(this.readyState==4){
                        if(this.status>=200&&this.status<300){
                            if(this.responseText.indexOf('failed') >= 0){
                                //alert(this.responseText);
                                alert('文件发送失败,请重新发送');
                                des.style.width='0%';
                                //num.innerHTML='';
                                //clearInterval(clock);
                            }else{
                                //alert(this.responseText)
                                // pending=false;
                                start=end;
                                end=start+LENGTH;
                                setTimeout('up()',1000);
                            }
    
                        }
                    }
                }
                xhr.upload.onprogress=function(ev){
                    if(ev.lengthComputable){
                        pecent=100*(ev.loaded+start)/file.size;
                        if(pecent>100){
                            pecent=100;
                        }
                        //num.innerHTML=parseInt(pecent)+'%';
                        des.style.width=pecent+'%';
                        des.innerHTML = parseInt(pecent)+'%'
                    }
                }
           
           //分割文件核心部分slice blob
    =file.slice(start,end); fd=new FormData(); fd.append('mof',blob); fd.append('test',file.name); //console.log(fd); //pending=true; xhr.send(fd); }else{ //clearInterval(clock); } } function change(){ des.style.width='0%'; } </script> </body> </html>

    file.php:

    <?php 
    /****
        waited
    ****/
    //print_r($_FILES);exit;
    
    $file = $_FILES['mof'];
    
    $type = trim(strrchr($_POST['test'], '.'),'.');
    
    // print_r($_POST['test']);exit;
    
    if($file['error']==0){
        if(!file_exists('./upload/upload.'.$type)){
            if(!move_uploaded_file($file['tmp_name'],'./upload/upload.'.$type)){
                echo 'failed';
            }
        }else{
            $content=file_get_contents($file['tmp_name']);
            if (!file_put_contents('./upload/upload.'.$type, $content,FILE_APPEND)) {
                echo 'failed';
            }
        }
    }else{
        echo 'failed';
    }
    
    ?>

    1 运行:

    2 选择2G文件测试:

    3 完成并正常播放:

  • 相关阅读:
    JAVA 继承
    JAVA 封装
    windows下vi/vim编辑器的基本操作
    Emacs 快速指南
    如何批量下载bing的背景图片?
    C#制作ActiveX插件
    MQTT协议
    三年前做的代码生成器,可以做为新手学习之用,当时忘了放上源码,实在抱歉!
    nginx lua 打印 特定 header
    利用Php ssh2扩展实现svn自动提交到测试服务器
  • 原文地址:https://www.cnblogs.com/waited/p/5256477.html
Copyright © 2020-2023  润新知