Dosya boyutu almak için Head isteğinde bulunmak

Uygulamalarımızda internet üzerindeki bir dosyanın boyut bilgisine ihtiyacımız olabilir.

Yapmamız gereken; dosyaya istekte bulunup Length özelliğinden dosya boyutu bilgisini almak.

var DosyaKonum = “/assets/uploads/2011/07/FPSOrnek.rar”;

WebClient wc = new WebClient(); var Dosya = wc.DownloadData(DosyaKonum);

int DosyaBoyut = Dosya.Length;</pre>

Bu yöntemin en önemli dezavantajı, dosyanın boyut bilgisini alabilmek için dosyayı gerçekten download etmemiz gerekiyor. Özellikle büyük boyutlu dosyalarda bu yöntem büyük problemlere yol açacaktır.

Aslında yapılan isteğin sonucunun Başlık (Header) bilgisinde dosya boyutu yer alıyor. Eğer Başlık‘tan (Header) boyut bilgisine ulaşabilirsek dosyayı download etmemize gerek kalmaz.

var DosyaKonum = "/assets/uploads/2011/07/FPSOrnek.rar";

var Request = WebRequest.Create(DosyaKonum);

Request.Method = "HEAD";

var Response = Request.GetResponse();

var DosyaBoyut = Response.Headers[HttpResponseHeader.ContentLength];


Öncelikle WebRequest sınıfının *static* Create() method'u sayesinde, parametresinde adresi verilmiş dosyaya bir **istek** oluşturuyoruz.

*Request* değişkeninin GetResponse() method'undan sonuç bilgisini almadan önce Method özelliğine **HEAD** değerini atıyoruz.

Böylece istek sonucunda, dosyanın içeriğinin değil **sadece başlık bilgisinin** bulunmasını sağlıyoruz.

HttpResponseHeader enum'ında yeralan **ContentLength** değeri ile *Response* değişkeninin Headers özelliğinden **dosyanın boyut bilgisine** ulaşabiliyoruz.

İlgili diğer makaleler

blog comments powered by Disqus

Engin Polat hakkında

Senior Software Engineer, @Microsoft

Ada ve Ege'nin babası ;)

Kategoriler

İstatistik

Makale Adedi: 484

Creative Commons Lisansı