2014-09-17 17 views
6

Formumda bir input type = dosya elemanı var. Giriş öğesini kullanarak bir dosya seçer seçmez dosya boyutunu kontrol etmek için özel bir yönerge oluşturmak istiyorum. Özel bir yönergenin nasıl oluşturulduğunu biliyorum, ancak seçilen öğenin dosya boyutunu belirlemek için açısallarda herhangi bir yol var mı? JQuery kullanılmayacaktır. dosya türünü yüklemeden önce giriş tipini doğrula = angularjs kullanarak dosya =

The'in js kodu: Bir yönerge dosya boyutunu nasıl kontrol

app.directive('checkFileSize',function(){ 
    return{ 
     require: 'ngModel', 
     link: function(scope, elem, attr, ctrl) { 
      // add a parser that will process each time the value is 
      // parsed into the model when the user updates it. 
      ctrl.$parsers.unshift(function (value) { 
       //i want to do something like this 
       var fileSize= // get file size here 
       if(fileSize>threshold){ 
        ctrl.$setValidity('checkFileSize',false);  
       } 
       // return the value to the model, 

       return someValue; 
      }); 
     } 
    } 
}); 
+0

Evet bu mümkün ama Ang'e özgü değil ular -http: //stackoverflow.com/questions/3717793/javascript-file-upload-size-validation. Bunu kolayca bir açısal doğrulama direktifine dahil edebilirsiniz. – pixelbits

+0

A I: Sizin için işe yarayan çözümü konsolide edebilir ve sağlayabilir misiniz? Teşekkürler ! – PavanSandeep

cevap

7

:

app.directive('checkFileSize',function(){ 
    return{ 
     link: function(scope, elem, attr, ctrl) { 
      $(elem).bind('change', function() { 
       alert('File size:' + this.files[0].size); 
      }); 
     } 
    } 
}); 

olmayan jquery sürümü:

app.directive('checkFileSize', function() { 
    return { 
    link: function(scope, elem, attr, ctrl) { 
     function bindEvent(element, type, handler) { 
     if (element.addEventListener) { 
      element.addEventListener(type, handler, false); 
     } else { 
      element.attachEvent('on' + type, handler); 
     } 
     } 

     bindEvent(elem[0], 'change', function() { 
     alert('File size:' + this.files[0].size); 
     }); 
    } 
    } 
}); 

http://plnkr.co/edit/ybuk6K6YNTIwnLTK5I6Z?p=preview

+0

bu çalışır. Ama jquery kullanıyor gibi görünüyor. JQuery kullanmayan bir çözüm var mı? –

+0

@ A.I ben junk olmayan sürüm –

+0

harika kullanmak için plunkr güncellendi! Bu yaklaşım şu an için problemimi çözüyor. –

İlgili konular