2010-01-27 25 views
5

मुझे सेवा से लौटाई गई कुछ फ़ाइलों की माइम-प्रकार निर्धारित करने की आवश्यकता है, मुझे उनके फ़ाइल एक्सटेंशन या उनके प्रकार का हाथ नहीं पता है, मूल रूप से हम एपीआई से दस्तावेज़ पुनर्प्राप्त करते हैं जैसे: "http://site.com/getFile/BFD843DFLKXJDF" अंत में यादृच्छिक पाठ कुछ फाइल है। पीडीएफ फाइलों के लिए "application/पीडीएफ":मैं केवल जावास्क्रिप्ट का उपयोग कर दस्तावेज़ के माइम-प्रकार को कैसे निर्धारित कर सकता हूं?

<input type="button" value="Click Me" onClick="alert(document.getElementById('iframeID').contentDocument.contentType);"> 

<iframe id="iframeID" src="http://site.com/getFile/BFD843DFLKXJDF" width="600" height="600" /> 

यह फ़ायरफ़ॉक्स में काम करता है, यह चेतावनी संवाद में वापस आती है। हालांकि इंटरनेट एक्सप्लोरर मुख्य ब्राउज़र है जिसे मुझे लक्षित करने की आवश्यकता है, "contentDocument" को परिभाषित नहीं किया गया है (स्पष्ट रूप से मैं इसके बजाय केवल "दस्तावेज़" का उपयोग करता हूं), लेकिन "कंटेंट टाइप" भी अनिर्धारित है और मुझे नहीं पता कि आईई समकक्ष क्या होगा (google खोजों ने कोई परिणाम नहीं दिया है)।

सहायता की बहुत सराहना की जाती है, धन्यवाद।

+0

हाय क्या आपको कभी ऐसा करने का अच्छा तरीका मिला? मुझे एक ही समस्या का सामना करना पड़ रहा है। मैं फ़ाइल एक्सटेंशन के आधार पर माइम प्रकार प्राप्त करने के लिए जावास्क्रिप्ट का उपयोग करने की योजना बना रहा हूं। क्या आपने इस लुकअप को करने वाले किसी भी फ़ंक्शन को ढूंढ/लिखा था? – Daveo

उत्तर

1

यदि http://site.com आपके डोमेन से अलग है, तो आप किसी भी ब्राउज़र पर अपने डेटा तक पहुंच नहीं पाएंगे। यह क्रॉस-साइट स्क्रिप्टिंग सुरक्षा उपायों के कारण है।

+0

साइट.com एक ही डोमेन है, लेकिन मुझे केवल चीजों के सामने वाले पक्ष तक पहुंच है। तो मुझे लगता है कि क्रॉस साइट कोई मुद्दा नहीं होगा। – Folken

+0

तो सामग्री प्रकार प्राप्त करने के लिए आप जावास्क्रिप्ट का उपयोग क्यों कर रहे हैं? क्या आपको सर्वर को उस तरह की जानकारी क्लीनर तरीके से नहीं देनी चाहिए? –

+0

मुझे वर्तमान में बैक-एंड कोड/कार्यक्षमता तक पहुंच नहीं है, इसलिए मैं माइम-प्रकार को पकड़ने के लिए एक फ्रंट-एंड तरीका ढूंढ रहा हूं, अगर कोई तरीका है कि सर्वर माइम-प्रकार का खुलासा करता है स्वाभाविक रूप से सामने के अंत तक, मैं इसे सुनना चाहूंगा क्योंकि अभी मैं एक मृत अंत में हूं। – Folken

0

शायद:

var frame = document.getElementById('iframeID'); 
var type; 

if (frame.contentDocument) { 
    type = frame.contentDocument.contentType; 
} else { 
    type = frame.contentWindow.document.contentType; 
} 
alert(type); 

दिन का परीक्षण करने के कुछ ही समय की क्षमा अंत ....

+0

दुर्भाग्य से नहीं, फिर यह सामग्री है टाइप प्रकार - यदि आप इस पृष्ठ के लिए पता बार में निम्न जावास्क्रिप्ट दर्ज करते हैं: "जावास्क्रिप्ट: अलर्ट (document.contentType);" और फिर "एंटर" दबाएं - आईई में आपको "अपरिभाषित" मिलेगा, फ़ायरफ़ॉक्स में आपको "टेक्स्ट/एचटीएमएल" मिलेगा। – Folken

0

आईई document.mimeType का समर्थन करता है, लेकिन यह एक दोस्ताना नाम नहीं वास्तविक foo/बार वाक्य रचना देने के लिए लगता है। जो डरावना है। हालांकि यह आपके उद्देश्यों के लिए पर्याप्त हो सकता है।

मुझे नहीं पता कि यह here दस्तावेज क्यों नहीं है, लेकिन देशी IHTMLDocument2 इंटरफ़ेस इसे here दस्तावेज करता है। बहुत अजीब।

+0

दुर्भाग्यवश मेरे पास माइम टाइप संपत्ति का उपयोग करके कोई भाग्य नहीं है। – Folken

+0

यह बिल्कुल काम नहीं करता (स्क्रिप्ट त्रुटि) या यह आपको वह नहीं दिया जो आप चाहते थे? –

+0

इसने आने वाले वास्तविक दस्तावेज़ का माइम-प्रकार नहीं दिया। बिंदु में, दस्तावेज़ को कॉल करना। इस पृष्ठ पर माइम टाइप मुझे "फ़ायरफ़ॉक्स दस्तावेज़" देता है (मुझे लगता है कि इसका मतलब है कि यह एक HTML दस्तावेज़ है - अब तक इतना अच्छा है) , इसे जेपीईजी पर कॉल करने से मुझे जेपीजी छवि मिलती है, यह भी अच्छा है, इसे पीडीएफ पर कॉल करने से मुझे एक त्रुटि मिलती है: "इंटरनेट एक्सप्लोरर डाउनलोड नहीं हो सकता है। निर्दिष्ट त्रुटि" - हमारे द्वारा प्राप्त किए गए कई दस्तावेज़ इन सहित विभिन्न प्रारूपों में हैं। – Folken

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

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