Как выбрать файл с помощью Angularjs?

Я работаю над приложением Angularjs.

Я могу вызвать функцию при выборе файла, но она не передает выбранный файл в функцию Angularjs. Я получаю неопределенное значение в переменной selectedFile.

Я использую триггер, чтобы открыть средство выбора файлов следующим образом:

$scope.clickUpload = function () {
    angular.element('#uploader').trigger('click');
}

Ниже приведен мой HTML:

<button type="submit" ng-click="clickUpload()">
<span>Upload Image</span>
</button>
<input id="uploader" hidden type="file" ng-accept="'.jpg,.png,.gif,.jpeg,.webp'" ngf-select="uploadFile(selectedFile)" ng-model="selectedFile" name="file" />

Ниже приведена моя функция Angularjs для загрузки выбранного файла:

$scope.uploadFile = function (selectedFile) {
    alert(selectedFile);
}

Какую ошибку я совершил? Спасибо, что прочитали мой вопрос.

1 ответ

  1. Директиву нельзя использовать ngModelво type="file"входных данных. Сделайте это вместо:

    $scope.clickUpload = function() {
        var fileInput = document.getElementById("uploader");
        fileInput.click();
    
        //do nothing if object doesn't contain a file
        if(fileInput.files.length === 0) return;
    
        var file = fileInput.files[0];
        alert(file.fileName);
    }