• angular在1.5.5以上文件上传进度监控


    angular在1.5.5以上的版本中,在$http中也加入了eventHandler和uploadEventHandlers等方法。

    发送请求:

    $http({
    method:"POST",
    url:basePath+"/roadShow/saveOrUpdate",
    eventHandlers: {
    progress: function(c) {
    console.log('Progress -> ' + c);
    console.log(c);
    }
    },
    uploadEventHandlers: {
    progress: function(e) {
    console.log('UploadProgress -> ' + e);
    console.log(e.loaded/e.total*100);
    }
    },
    data:form,
    headers:{"Content-Type":undefined},
    transformRequest: angular.identity
    })
    $scope.uploadSample = function(sampleFile){
            var fd = new FormData();
            fd.append('file',sampleFile);
            $http({
                method:'post',
                uploadEventHandlers: {
                    progress: function(e) {
                       $scope.sampleFile.progress = parseInt(e.loaded/e.total*100);
                    }
                },
                url:$scope.baseUrl + 'sampleCenter/administration',
                data:fd
            }).then(function(response){
                if(response.data.error){
                    ngTip.tip(response.data.error, 'error');
                }else{
                    ngTip.tip(response.data.success, 'success');
                }
            },function(){
                ngTip.tip('上传失败请与管理员联系', 'error');
            })
        }
    <div class="login_wrapper">
        <form name="fileForm">
            <fieldset>
                <legend>文件上传</legend>
                <div class="form-group">
                    <input type="file" ngf-select ng-model="sampleFile" name="filename" accept=".xlsx" required ngf-model-invalid="errorFile">
                      <i ng-show="fileForm.file.$error.required">*请选择文件</i>
                </div>
                <div class="form-group">
                    <button ng-click="sampleFile = null" ng-show="sampleFile" class="btn btn-danger btn-sm">移除</button>
                    <button ng-disabled="!fileForm.$valid" ng-click="uploadSample(sampleFile)" class="btn btn-primary btn-sm">上传</button>
                </div>
                <div class="form-group">
                    <div class="progress">
                        <div class="progress-bar progress-bar-success" role="progressbar" aria-valuenow="0" aria-valuemin="0" aria-valuemax="100" style="{{sampleFile.progress}}%" ng-bind="sampleFile.progress + '%'"></div>
                    </div>
                </div>
            </fieldset>
        </form>
    </div>


    其中,可以用e.loaded/e.total*100来计算进度:

    实际应用时,可结合Math.floor()。

  • 相关阅读:
    vue-cli+webpack打包,上线
    vue2.0搭建vue手脚架(vue-cli)
    vue -- vue-cli webpack项目打包后自动压缩成zip文件
    Java字符串和常用类
    Java基础
    TF-IDF与TextRank的关键词提取算法应用
    ACl2019|使用Graph-to-Sequence模型为中文文章生成连贯的评论
    ACL2019|巧用文本语境信息:基于上下文感知的向量优化
    探索四川奥秘
    手机浏览器通过Scheme跳转APP,兼容各种手机浏览器
  • 原文地址:https://www.cnblogs.com/yiyangl/p/10691643.html
Copyright © 2020-2023  润新知