文件没有在Angular JS中传递ng-file-select

问题描述 投票:0回答:1

我试图将文件从html视图传递给角度控制器,为此我在视图中使用ng-file-select。我的视图代码如下:

<div ng-controller="fileController">

    <input type="file" ng-model="fibQuestion.fibContentLanguage.colUploadPaperUrl" name="PaperDocUrl" ng-file-select="onPaperFileSelect($files)" onclick="this.value = null" id="forPracticalTestPaper" />

    <div>
        <input type="button" id="save" class="btn btn-success" value="Save" ng-click="PaperFileProcessing()" />
    </div>
</div>

但是在这里,ng-file-select =“onPaperFileSelect($ files)”无法将文件传递给控制器​​。控制器代码是:

app.controller('fileController',function($scope) {



    $scope.onPaperFileSelect = function ($files) {
        if ($scope.verifiedFileType($files[0].name, 'paper')) {
            $scope.saveFileLoacation = '~/UploadedFiles/PracticalTestPaperFiles/';
            $scope.yesDisable = false;
            $scope.uploadedPaper = $files;
            $('#upload-paper-file-info').text($files[0].name);
            $scope.showPaperDeleteButton = true;
        }
    };


    $scope.verifiedFileType = function (fileName, fileType) {

        var extension = (fileName.substring(fileName.lastIndexOf('.'), fileName.length)).toLowerCase();
        if (extension == ".pdf") {
            return true;
        }
        else {
            alert("file extension not valid for " + fileType + ". available extensions are pdf.");
            angular.element("input[type='file']").val(null);
            return false;
        }
    };

    $scope.PaperFileProcessing = function () {

        $scope.upload = [];
        $scope.yesDisable = true;

        var fileBank = $scope.uploadedPaper;
        console.log(fileBank);
        var status = false;
        var i = fileBank.length;
        console.log(i);         
    };    
});

何时,我按下保存按钮,调用函数PaperFileProcessing(),然后,var fileBank = $ scope.uploadedPaper;显示未定义。

angularjs asp.net-web-api
1个回答
0
投票

我认为你的代码缺少某种“承诺”等待完全上传的文件,不是吗?也许是这样的:

// returns a promise
upload.then(function(resp) {
  // file is uploaded successfully
  console.log('file ' + resp.config.data.file.name + 'is uploaded successfully. Response: ' + resp.data);
}, function(resp) {
  // handle error
}, function(evt) {
  // progress notify
  console.log('progress: ' + parseInt(100.0 * evt.loaded / evt.total) + '% file :'+ evt.config.data.file.name);
});
© www.soinside.com 2019 - 2024. All rights reserved.