如何在渲染器功能中访问文件?

时间:2014-11-06 15:22:42

标签: angularjs

我看到了一个解决方案: How to validate form with input[type=file] in angularjs

我想知道是否有可能检查,例如渲染器内的mimetype或文件大小? 我不想只设置当前所选文件(对于所需的输入字段文件)我还想检查文件是否太大。

1 个答案:

答案 0 :(得分:1)

是的,你可以这样做。使用文件api。在文件更改回调中,您可以使用以下代码处理文件:

myApp.directive('validFile', function () {
    return {
        require: 'ngModel',
        link: function (scope, el, attrs, ngModel) {
            var maxSize = 100;
            var invalidSize = true;
            ngModel.$render = function () {
                // when you setValidity 'invalidSize' to false
                // then you 'form.myfile.$error.invalidSize' will be true.
                ngModel.$setValidity('invalidSize', invalidSize);
            };
            el.bind('change', function(evt){
                console.log(evt);
                var files = evt.target.files; // You can handle multifile here but need input file set multiple attribute
                var file = files[0];
                console.log(file); // You can see all these attribute here.
                console.log(file.size);
                if(file.size > maxSize){
                    invalidSize = false;
                }else{
                    invalidSize = true;
                }
                scope.$apply(ngModel.$render);
            });
        }
    };
});

Here is file api document.

Here is DEMO Code.