2011-09-03 18 views
31

मैं कैसे जांच सकता हूं कि ब्राउज़र HTML5 फ़ाइल अपलोड (फॉर्मडेटा ऑब्जेक्ट) का समर्थन करता है या नहीं?मैं कैसे जांच सकता हूं कि ब्राउज़र HTML5 फ़ाइल अपलोड (फॉर्मडेटा ऑब्जेक्ट) का समर्थन करता है या नहीं?

var fd = new FormData(); 
इस post से जवाब के बाद

, लेकिन कोड ब्राउज़र के बारे में सही उत्तर वापस नहीं करता है,

window.onload = function() 
{ 
if (!!window.FileReader) 
{ 
    alert('supported'); 
} 
else 
{ 
    alert('not supported'); 
} 
} 


Firefox - supported 
Chrome - supported 
Opera - supported 
Safari - not supported 
IE9 - not supported 

लेकिन सही ब्राउज़र समर्थन होना चाहिए,

Firefox - supported 
Chrome - supported 
Opera - not supported 
Safari - supported 
IE9 - not supported 

मेरे पास है ओपेरा पर एचटीएमएल 5 फ़ाइल अपलोड का परीक्षण किया गया और यह काम नहीं है निश्चित रूप से जी।

मुझे यकीन है कि सफारी एचटीएमएल 5 फ़ाइल अपलोड का समर्थन करता है।

उत्तर

11

से http://blog.new-bamboo.co.uk/2010/7/30/html5-powered-ajax-file-uploads

function supportAjaxUploadProgressEvents() { 
    var xhr = new XMLHttpRequest(); 
    return !! (xhr && ('upload' in xhr) && ('onprogress' in xhr.upload)); 
}; 

FormData के रूप में, की क्षमता भेजने के लिए() एक, और अपलोड संपत्ति (और इसके onprogress घटना) XMLHttpRequest स्तर 2 का हिस्सा हैं, आप के लिए .upload के लिए परीक्षण कर सकते हैं देखें कि क्या आपके पास स्तर 2 है। मेरे पास मैक आसान नहीं है, लेकिन फ़ंक्शन (दुख की बात है, लेकिन सही ढंग से) ओपेरा 11.50 (और फ़ायरफ़ॉक्स 4 के लिए सच) के लिए झूठी रिटर्न देता है।

-3

आपको यह जांचना होगा कि ब्राउज़र HTML5 फ़ाइल API का समर्थन करता है या नहीं। मैं यह जांचकर करता हूं कि FileReader फ़ंक्शन सेट है या नहीं, यदि यह सेट नहीं है तो इसका मतलब है कि ब्राउज़र फ़ाइल API का समर्थन नहीं करेगा।

// Check if window.fileReader exists to make sure the browser supports file uploads 
if (typeof(window.FileReader) == 'undefined') 
    { 
     alert'Browser does not support HTML5 file uploads!'); 
    } 
+3

यह कोड FileReader ऑब्जेक्ट के लिए चेक करता है, जो FormData ऑब्जेक्ट से अलग है। – webinista

68

if(window.FormData === undefined) या if(window.FormData !== undefined) की कोशिश करो।

+12

+1, IE8/IE9 '(window.FormData === अपरिभाषित) में 'सत्य लौटाता है और आईई 10 में, यह झूठा लौटाता है। – Annie

+2

शायद 'टाइपोफ़' का उपयोग करना चाहिए, क्योंकि 'अपरिभाषित' कुछ ब्राउज़रों में कोई कीवर्ड नहीं है। (उदाहरण के लिए मैं 'var undefined = विंडो कह सकता हूं।फॉर्मडाटा') – Azmisov

+0

तो, टाइपफॉफ़ के साथ, "अगर (टाइपफ (विंडो.फॉर्मडाटा) == 'अपरिभाषित')", है ना? – DCShannon

1

आप इस लाइब्रेरी द्वारा प्रदान किए गए कामकाज का उपयोग कर सकते हैं।

var xhr2 = !! (window.FormData && ("upload" in ($.ajaxSettings.xhr())); 
2

यह एक लाइनर मैं ब्राउज़र FormData समर्थन करता है या और प्रगति अपलोड करने के लिए उपयोग करते हैं, jQuery में है suported है लेकिन यह छोटी गाड़ी है।

  • सफारी वापस आ जाएगी फ़ाइल आकार 0

    ओपेरा फ़ॉर्म डेटा को संलग्न विधि का समर्थन नहीं करता

    फ़ायरफ़ॉक्स < 6 काम नहीं करता है सही ढंग से

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

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