İstemci HTML5 kullanarak dosya boyutunu kontrol ediyor musunuz?


85

HTML5 dalgasına binmeye çalışıyorum ama küçük bir sorunla karşı karşıyayım. HTML5'ten önce dosya boyutunu flash ile kontrol ediyorduk ancak şimdi trend, web uygulamalarında flash kullanmaktan kaçınmaktır. İstemci tarafında dosya boyutunu HTML5 kullanarak kontrol etmenin bir yolu var mı?

Yanıtlar:


128

Bu çalışıyor. Giriş değiştiğinde onu bir olay dinleyicisinin içine yerleştirin.

if (typeof FileReader !== "undefined") {
    var size = document.getElementById('myfile').files[0].size;
    // check file size
}

Benim için IE 10, Mozilla FFx ve Chrome'da çalışıyor. Teşekkürler!
Rahnzo

iyi çalışıyor, sadece doğru kullanmıyorsunuz; girişin onchange olayında oturum açın ve iyi olacaksınız.
dandavis

@dandavis Cevapta kodu kullanıyorum. Kod düzgün çalışıyorsa, neden değiştirmem gerekiyor?
Chuck Le Butt

1
@Chuck örneğiniz çalışmıyor çünkü herhangi bir dosyayı seçmeden önce sayfa yüklemede dosya listesini okumaya çalışıyorsunuz.
yaklaşık

1
@Chuck: tamam, gayet iyi çalışıyor ve siz yapıştırdınız, ancak tek başına yeterli değil. Dosyayı doldurduktan sonra konsolda çalıştırırsanız, iyi çalıştığını görürsünüz. uygulamalar için konsol iyi değildir, bu nedenle kodu, giriş doldurulduktan sonra çalışan bir olaya koymalısınız, böylece beklendiği gibi çalışacaktır. yanlış anlaşılma için üzgünüm.
dandavis

33

Kabul edilen cevap aslında doğrudur, ancak bunu bir olay dinleyicisine bağlamanız gerekir, böylece dosya girişi her değiştirildiğinde güncellenir.

document.getElementById('fileInput').onchange = function(){
    var filesize = document.getElementById('fileInput').files[0].size;
    console.log(filesize);    
}

JQuery kitaplığı kullanıyorsanız, aşağıdaki kod kullanışlı olabilir

$('#fileInput').on('change',function(){
  if($(this).get(0).files.length > 0){ // only if a file is selected
    var fileSize = $(this).get(0).files[0].size;
    console.log(fileSize);
  }
});

Herhangi bir metriğin görüntüleneceği fileSize dönüşümünün size bağlı olduğu göz önüne alındığında.


JQuery örneğiniz çalışmıyor. Sen ile jQuery kullanmak mümkün görünmüyor .files: jsfiddle.net/edxvo4wa (- Bunu değiştirmek eğer çalıştığını ben bir çözüm gelirken bu kendim keşfettim document.getElementById).
Chuck Le Butt

1
@Chuck oradaki hata için özür dilerim, cevabımı çalışan
olanla


3

Şahsen, şu biçimi tercih ederdim:

    $('#inputFile').bind('change', function(e) {
      var data = e.originalEvent.target.files[0];
      // and then ...
      console.log(data.size + "is my file's size");
      // or something more useful ...
      if(data.size < 500000) {
        // what your < 500kb file will do
      }
    }

1
500kb'nin aslında 500 * 1024 olacağına inanıyorum. Çok önemli değil, ancak 500,000b dosyası olan son kullanıcı bunu 488kb olarak görecek ve reddetti. Ve işte büyük hayal kırıklığı başlıyor
Apolo

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.