2009-09-27 8 views
12

यहाँ मैं क्या करने की उम्मीद कर रहा हूँ है:प्राप्त आकार ajax के माध्यम से अनुरोध किया

मैं एक फ़ाइल (अधिमानतः jQuery के साथ) के लिए एक ajax अनुरोध भेजने के लिए चाहते हैं, और एक बार फ़ाइल लोड किया गया है, आकार निर्धारित अनुरोधित फ़ाइल का।

थोड़ी सी गुगलिंग के बाद, यह स्पष्ट है कि मुझे यह पता लगाने के लिए सही सवाल का अच्छा विचार भी नहीं है। किसी भी तरह की सहायता का स्वागत किया जाएगा।

उत्तर

37

आप HTTP HEAD अनुरोध कर सकते हैं, और Content-Length HTTP शीर्षलेख पढ़कर फ़ाइल का आकार अनुमानित करें।

इस प्रकार का अनुरोध अनुरोध में उल्लिखित यूआरएल के बारे में मेटा-सूचना प्राप्त करने के लिए किया जाता है, प्रतिक्रिया में किसी भी सामग्री को स्थानांतरित किए बिना।

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

+ अपवोट, यह असली जवाब होना चाहिए :) –

+0

धन्यवाद @meder! – CMS

+0

मैं सहमत हूं - मैं वास्तव में क्रॉस डोमेन कार्यक्षमता के लिए अन्य विधि का उपयोग कर समाप्त कर सकता हूं, लेकिन यह वास्तव में वह जवाब है जिसे मैंने पूछा था। – Peter

2

आप सर्वर-साइड कमांड बना सकते हैं जो फ़ाइल का पथ और नाम लेता है, लंबाई प्राप्त करने के लिए फ़ाइल खोलता है, और आकार को क्लाइंट को वापस भेजता है। आप यह कैसे करते हैं कि आप किस सर्वर-साइड भाषा का उपयोग कर रहे हैं इस पर निर्भर करेगा। क्या आप जिस प्रकार की कार्रवाई की तलाश में हैं?

+0

एचएम ... तो, मैं एक php फ़ाइल को कॉल करने के लिए AJAX का उपयोग कर सकता हूं, जो वास्तव में इच्छित फ़ाइल की सामग्री को लोड करेगा, यह पता लगाएं कि यह कितना बड़ा है, फिर फ़ाइल सामग्री और आकार दोनों को जावास्क्रिप्ट पर वापस कर दें । और ऐसा करने से मुझे परेशानी के बिना किसी अन्य डोमेन से सामग्री कॉल करने की अनुमति मिल जाएगी। यह बिल्कुल शानदार लगता है - बिलकुल भी नहीं, मैंने सोचा कि मैं क्या देख रहा था, लेकिन एक शानदार समाधान। – Peter

+0

हाँ, मैंने एक अधिकृत डाउनलोड नियंत्रक बनाते समय जावा के साथ अतीत में ऐसा किया है। आप सीएमएस के सुझाव को भी देखना चाहते हैं - मैंने कभी भी HEAD कमांड का उपयोग करने के बारे में सोचा नहीं है, लेकिन यदि आपको केवल फ़ाइल आकार की आवश्यकता है, तो यह और भी शानदार ढंग से काम कर सकता है। –

+0

यह अब तक का एकमात्र उत्तर है जो gzip एन्कोडिंग से बचाता है जिससे सामग्री-लंबाई वापस नहीं भेजी जाती है। – user3338098

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

आप मूल रूप से एक प्रमुख HTTP अनुरोध करते हैं और क्वेरी सामग्री-लंबाई, जो एक्स बाइट्स देता है।

+0

यदि gzip एन्कोडिंग का उपयोग किया जाता है तो सामग्री-लंबाई शीर्षलेख भेजा नहीं जाता है – user3338098

संबंधित मुद्दे