使用html5实现文件上传进度条

html

 <div id="file">
      <input type="file" name="ver" id="ver"/>
      <font color="red">*(apk,ipa目前为自动重命名)</font><br />
      <div class="progress"><span class="bgpro"></span></div>
</div>

 

css
<style type="text/css">
    div.progress{width:400px;height:20px;border:1px solid blue;background:#fff;display:none;}
    span.bgpro{display:block;height:20px;background:blue;width:0px;text-align:right;color:#fff;font-size:12px;}
</style>

 

JS

//触发事件
 $(‘#ver‘).change(function() {
      //if 也可以使用try
        if(typeof this.files == ‘undefined‘) {
            alert(‘建议您使用ie9以上非兼容模式或者火狐,谷歌浏览器进行上传可以实时查看上传进度!‘);
        }
        var ver     = this.files[0];
       //获取文件后缀名
        var fixed   = /\.[^\.]+$/.exec(ver.name);
        if(fixed != ‘.apk‘ && fixed != ‘.ipa‘) {
            alert(‘请上传正确类型的文件!‘);
            return false;
        }
//将进度条显示出来
        $(‘div.progress‘).show();
        try {
            var fd      = new FormData();
        }catch(error) {
            alert(‘建议您使用ie9以上非兼容模式或者火狐,谷歌浏览器进行上传可以实时查看上传进度!‘);
        }
        fd.append(‘ver‘,ver);
        try{
//获取xml对象
            var xhr     = new XMLHttpRequest();
        }catch(error) {
            alert(‘建议您使用ie9以上非兼容模式或者火狐,谷歌浏览器进行上传可以实时查看上传进度!‘);
        }
//发送ajax
        xhr.open(‘post‘,"__URL__/uploadFile",true);
        xhr.upload.onprogress = function(ev) {
//进行进度条展示
            var percent = 0;
            if(ev.lengthComputable) {
                percent = 100 * ev.loaded / ev.total;
                percent = parseFloat(percent).toFixed(2);
                $(‘span.bgpro‘).css(‘width‘,percent + ‘%‘).html(percent + ‘%‘);
            }
        };
        xhr.send(fd);
    });

 

PHP 
使用tp框架的文件上传
        /*
            版本文件上传
        */
        public function uploadFile() {
            //版本上传
            if($_FILES[‘ver‘][‘name‘] == ‘‘)
                $this->error(‘请上传版本文件!‘);
            //上传
            import("ORG.Net.UploadFile");
            $upload             = new UploadFile();// 实例化上传类
            $upload->maxSize      = -1 ;// 设置附件上传大小
            $upload->allowExts  = array(‘apk‘,‘ipa‘);// 设置附件上传类型
            $upload->savePath     =  C(‘_UPLOAD_URL‘) . ‘Version/‘;// 设置附件上传目录
            $upload->saveRule     = ‘uniqid‘;
            $upload->autoSub     = true;
            if(!$upload->upload()) {// 上传错误提示错误信息
                $this->error($upload->getErrorMsg());
            }else{// 上传成功 获取上传文件信息
                $info =  $upload->getUploadFileInfo();
            }
            return $info[‘ver‘][‘savename‘];
        }

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。