2009-09-27 19 views
12

İşte yapmak umuyorum ne ajax istendi:alın boyutu

Ben bir dosyaya (tercihen jQuery ile) bir ajax isteği göndermek istiyor ve dosya yüklendikten sonra, boyutunu belirlemek istenen dosyanın

Biraz uğraştıktan sonra, bu soruyu sormak için doğru soru hakkında iyi bir fikrim bile olmadığı açıktır. Herhangi bir yardım büyük takdir edilecektir.

cevap

37

HTTP HEAD isteği yapabilir ve Content-Length HTTP Üstbilgisini okuyarak yaklaşık bir dosya boyutu alabilirsiniz.

Bu tür bir istek, yanıtta herhangi bir içerik aktarılmadan, istek tarafından ima edilen URL hakkında meta bilgi elde etmek için kullanılır.

var xhr = $.ajax({ 
    type: "HEAD", 
    url: "path/to/file.ext", 
    success: function(msg){ 
    alert(xhr.getResponseHeader('Content-Length') + ' bytes'); 
    } 
}); 
+0

+ upvote, bu gerçek cevap olmalı :) –

+0

Teşekkür ederiz @meder! – CMS

+0

Katılıyorum - aslında diğer etki alanı işlevselliği yöntemini kullanarak son bulabilirim, ama bu sorduğumda aradığım cevaptır. – Peter

2

Dosyanın yolunu ve adını alan, uzunluğu almak için dosyayı açan ve boyutu istemciye geri gönderen sunucu tarafı bir komut oluşturabilirsiniz. Bunu nasıl yaptığınız, kullandığınız sunucu tarafı diline bağlı olacaktır. Aradığınız eylem türü bu mu?

+0

Hm ... Yani, aslında istediğim dosyanın içeriğini yükleyecek bir php dosyasını çağırmak için ajax kullanabilirim, ne kadar büyük olduğunu, sonra hem dosya içeriğini hem de boyutunu javascript olarak döndür . Ve bu şekilde yapmak, başka bir alandaki içeriği sorun olmadan aramamı sağlar. Bu kesinlikle harika görünüyor - aradığımı düşündüğüm şey değil, harika bir çözüm. – Peter

+0

Evet, yetkilendirilmiş bir indirme denetleyicisi oluştururken bunu geçmişte Java ile yapmıştım. Ayrıca CMS'nin önerisine de bakmak isteyebilirsiniz - HEAD komutunu kullanmayı hiç düşünmemiştim, ancak ihtiyacınız olan tek şey dosya boyutuysa, bu daha da parlak bir şekilde çalışabilir. –

+0

Bu, bugüne kadar gönderilecek içerik uzunluğuna neden olan gzip kodlamasını önleyen tek yanıttır. – user3338098

0
var XHRObj = $.ajax({ 
    type:'HEAD', 
    url:'/', 
    success:function(data) { 
     console.log(XHRObj.getResponseHeader('Content-Length')) 
    } 
}) 

Temelde bir HEAD HTTP isteği yapmak ve X bayt döndüren Content-Length, sorgulamak.

+0

gönderilmez – user3338098