2012-08-27 22 views
6

में जावास्क्रिप्ट फ़ाइल एपीआई को कैसे सक्षम करें मैंने एएसपीनेट में एक वेब एप्लीकेशन विकसित किया है, इस परियोजना में एक पृष्ठ है जिसे उपयोगकर्ता को चित्र प्रारूप (जेपीईजी, जेपीजी, बीएमपी, ...) में एक फ़ाइल चुननी चाहिए और मैं पृष्ठ में छवि का पूर्वावलोकन करना चाहता हूं लेकिन मैं सर्वर पर फ़ाइल पोस्ट नहीं करना चाहता हूं, मैं इसे क्लाइंट में संभालना चाहता हूं, मैंने इसे जावा एपीआई के माध्यम से जावा स्क्रिप्ट फ़ंक्शंस के साथ किया है, लेकिन यह केवल आईई 9 में काम करता है लेकिन अधिकांश costumers IE8 का उपयोग करते हैं कारण यह है कि IE8 फ़ाइल एपीआई का समर्थन नहीं करता है, आईई 8 अपग्रेड या कोड में कुछ पैच बनाने का कोई तरीका है, मेरा मतलब यह है कि ब्राउजर आईई है या नहीं, फ़ाइल एपीआई का समर्थन नहीं करता है, जो एक आईई 8 को आईई 9 में स्वचालित रूप से अपग्रेड करता है।
आईई 8

मैं उपयोगकर्ता से यह संदेश में नहीं करना चाहता हूं कि मैं इसे प्रोग्रामेटिक रूप से करना चाहता हूं !!
फ़ाइल एपीआई के लिए आवश्यक एक विशेष पैच स्थापित करना संभव है, क्योंकि ग्राहकों ने सोचा कि यह मेरे आवेदन में एक बग है और उनके कंप्यूटर ज्ञान कम मुझे इसके साथ क्या करना चाहिए?
मैं एसिंक फ़ाइल अपलोड अजाक्स कंट्रोल का भी उपयोग करता हूं लेकिन यह फ़ाइल को AJAX समाधान और HTTP हैंडलर के साथ किसी भी तरह से सर्वर पर पोस्ट करता है लेकिन जावा स्क्रिप्ट क्लाइंट ब्राउज़र में यह सब करता है !!!

निम्न स्क्रिप्ट की जाँच करता है ब्राउज़र एपीआई का समर्थन करता है या का पालन नहीं कर

<script> 
if (window.File && window.FileReader && window.FileList && window.Blob) 
    document.write("<b>File API supported.</b>"); 
else 
    document.write('<i>File API not supported by this browser.</i>'); 
</script> 

स्क्रिप्ट पढ़ने और लोड छवि कर

function readfile(e1) 
{ 
    var filename = e1.target.files[0]; 
    var fr = new FileReader(); 
    fr.onload = readerHandler; 
    fr.readAsText(filename); 
} 

एचटीएमएल कोड:

<input type="file" id="getimage"> 

<fieldset><legend>Your image here</legend> 
    <div id="imgstore"></div> 
</fieldset> 

जावा स्क्रिप्ट कोड:

<script> 
function imageHandler(e2) 
{ 
    var store = document.getElementById('imgstore'); 
    store.innerHTML='<img src="' + e2.target.result +'">'; 
} 

function loadimage(e1) 
{ 
    var filename = e1.target.files[0]; 
    var fr = new FileReader(); 
    fr.onload = imageHandler; 
    fr.readAsDataURL(filename); 
} 

window.onload=function() 
{ 
    var x = document.getElementById("filebrowsed"); 
    x.addEventListener('change', readfile, false); 
    var y = document.getElementById("getimage"); 
    y.addEventListener('change', loadimage, false); 
} 
</script> 

उत्तर

10

आप इंस्टॉल नहीं कर सकते हैं IE8 में फ़ाइल एपीआई के लिए समर्थन जोड़ने के लिए कुछ खास। आप जो कर सकते हैं वह पॉलीफिल का उपयोग उन ब्राउज़र में इस कार्यक्षमता को कार्यान्वित करने के लिए करता है जो इसका समर्थन नहीं करते हैं। HTML5 Cross Browser Polyfills की इस सूची पर नज़र डालें (आपको फ़ाइल एपीआई/ड्रैग और ड्रॉप अनुभाग में आपके लिए कुछ उपयुक्त खोजना चाहिए)।

+0

धन्यवाद एक बहुत tpeczek मैं इसे बाहर की जाँच करेगा, polyfill समारोह इतना चलाने के लिए फ़्लैश की जरूरत है मैं उपयोगकर्ता डाउनलोड करने और फ़्लैश स्थापित करने के लिए आप से पूछना चाहिए और मुझे क्या करना उपयोगकर्ता पूछने के लिए नहीं करना चाहते किसी भी चीज क्योंकि उपयोगकर्ता IE9 को सॉफ़्टवेयर में किसी भी तरह से स्थापित कर सकते हैं जब डेवलपर्स एक बग देखते हैं, वे एक पैच या प्लग-इन जारी करते हैं जो आपको बग को सुधारता है, जिसे आप जानते हैं कि मैं एक्सप्लोरर निर्देशिका में एक डीएलएल फ़ाइल कॉपी करना चाहता हूं और किसी भी प्रकार के माध्यम से एक्सप्लोरर में कुछ बदलाव करना चाहता हूं स्क्रिप्ट्स का मुझे लगता है कि एक तरीका है कि मैं एक फाइल अपलोड कर सकता हूं और जांच सकता हूं कि ब्राउज़र एपीआई फ़ंक्शन डाउनलोड डीएलएल फ़ाइल का समर्थन नहीं करता है और कुछ ऑपरेशन करता है जैसे कि system32 – saeed

+1

पर कॉपी करें मेरी बड़ी समस्या यह है कि IE8 फ़ाइल API का समर्थन नहीं करता है किसी भी तरह से बैच फ़ाइल कुछ चीज करने के लिए – saeed

+0

@ सईड आईई में समर्थित फ़ाइल एपीआई प्राप्त करने का एकमात्र तरीका IE9 + होना है। आप किसी भी डीएलएल को भी नहीं बदल सकते हैं या वेब एप्लिकेशन स्तर से किसी भी सॉफ्टवेयर को इंस्टॉल नहीं कर सकते हैं - ऐसी संभावना एक बड़ी सुरक्षा उल्लंघन होगी (याद रखें कि आप एक सैंडबॉक्स में हैं)। – tpeczek

2

कुछ शोधों के बाद मुझे आईई 8 में फ़ाइल एपीआई को सक्षम करने का कोई तरीका नहीं है, लेकिन मुझे कुछ चीज़ मिल गई है जो इसे आपके साथ साझा करना चाहता है .....
सीधे नहीं, HTML 5 IE8 द्वारा समर्थित नहीं है । कैनवास के लिए एडॉन्स हैं, और Google क्रोम फ्रेम भी है, जो 9 5 से पुराने आईई में एचटीएमएल 5 जोड़ने के लिए एक प्लगइन है।
जैसा कि मैंने समझा, Google क्रोम फ्रेम एचटीएमएल 5 का उपयोग करने का एक सही तरीका है।
यह आईई गति से 10 गुना बढ़ जाती है और यह भी उपयोग किया जाता है बहुत आसान है और मैं आप सभी सदस्यों के लिए यह वर्णन ...
गूगल क्रोम फ्रेम

इंटरनेट एक्सप्लोरर के लिए एक प्लगइन है कि माइक्रोसॉफ्ट के ब्राउज़र, एक पूर्ण HTML करने के लिए जोड़ क्रोम का 5 समर्थन और जावास्क्रिप्ट कंपाइलर! 22 सितंबर, 2010 को एक स्थिर संस्करण जारी किया गया था और कई साइटों ने अपने पृष्ठों में कोड जोड़ा है।

यह प्लगइन इंटरनेट एक्सप्लोरर 6, 7 और आगे के संस्करणों पर काम करेगा। Google एक अवरोध तोड़ना चाहता है जो वेब को विकसित करने से रोकता है: सबसे आम ब्राउज़र और नए मानकों के साथ संगतता की कमी।

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

इस प्लगइन का लाभ वेब अनुप्रयोगों की संगतता के लिए बहुत अच्छा है और वेबकिट में एकीकृत वेबजीएल के साथ और भी उपयोगी हो जाएगा, जो हमें ब्राउज़र पर 3 डी में एप्लिकेशन करने देता है: एक बहुत ही अलग वेब! वेबजीएल को संस्करण 3.7 के बाद फ़ायरफ़ॉक्स द्वारा भी समर्थित किया गया है।

मई 2011 से, प्लगइन व्यवस्थापक अधिकारों के बिना स्थापित किया जा सकता है, इसलिए आईई के पुराने संस्करण पर जो सर्वर में शामिल हैं और अपडेट नहीं किए जा सकते हैं।

वेब पेज के कोड में एक टैग उपयोगकर्ता को प्लगइन डाउनलोड करने के लिए प्रेरित करने वाला एक संदेश प्रदर्शित करेगा। एक बार जब यह स्थापित किया गया है, आईई क्रोम के रूप में चलाने के लिए और एचटीएमएल का समर्थन करेंगे 5.

फ्रेम

बंद लाइन मोड की विशेषताएं। और टैग। माइक्रोसॉफ्ट भी आईई में उन्हें लागू करने की योजना बना रहा है। कैनवास। वेबजीएल। सीएसएस 3. जावास्क्रिप्ट कंपाइलर। एसिड 3 स्तर पर संगतता। vidéo देखें। माइक्रोसॉफ्ट

से

रिएक्शन हम उम्मीद कर रहे थे कि माइक्रोसॉफ्ट वास्तव में इस पहल है कि उनके अपने समाधान, सिल्वरलाइट की हानि के लिए एचटीएमएल 5 को बढ़ावा देता है की सराहना नहीं की है। फर्म एक सुरक्षा समस्या पर प्रकाश डाला गया है:

सामान्य रूप से प्लग-इन के साथ सुरक्षा समस्याओं को देखते हुए और विशेष रूप से Google क्रोम, प्लग-इन के रूप में चल रहे Google क्रोम फ्रेम ने मैलवेयर और दुर्भावनापूर्ण स्क्रिप्ट के लिए हमले क्षेत्र को दोगुना कर दिया है।

**

क्रोम फ्रेम। स्वचालित स्थापना। -> http://www.google.com/chromeframe/?quickenable=true
Google क्रोम फ़्रेम कोड। ->https://developers.google.com/chrome/chrome-frame/
क्रोम फ्रेम: डेवलपर मार्गदर्शिका। ->http://www.chromium.org/developers/how-tos/chrome-frame-getting-started

**

+0

मुझे अपनी राय बताएं – saeed

+1

Google क्रोम फ्रेम समर्थन बंद हो रहा है। वेबसाइट से: "हम क्रोम फ्रेम को घुमा रहे हैं, और जनवरी 2014 में समर्थन और अपडेट को बंद करने की योजना बना रहे हैं।" – danial

2

इस पूर्व IE10 में मेरे लिए काम करता है, मैं हर दूसरे ब्राउज़र के लिए https://github.com/eligrey/FileSaver.js उपयोग करते हैं, टिप्पणी, हालांकि यह यह सही नहीं है, क्योंकि यह IE है काम करता है और अच्छी तरह से तुम्हें पता है मैं क्या मतलब है

आशा इस मदद करता है

/** 
* saves File, pops up a built in javascript file as a download 
* @param {String} filename, eg doc.csv 
* @param {String} filecontent eg "this","is","csv" 
* @param {String} mimetype eg "text/plain" 
*/ 
function saveAs (filename, filecontent, mimetype) { 
    var w = window.open(); 
    var doc = w.document; 
    doc.open(mimetype,'replace'); 
    doc.charset = "utf-8"; 
    doc.write(filecontent); 
    doc.close(); 
    doc.execCommand("SaveAs", null, filename); 
} 
+0

महान लेकिन सवाल ie8 के लिए है। तो लाइब्रेरी बेकार है। –

+0

आईई 8 में एक प्रोजेक्ट के लिए मेरे लिए काम किया है, मैंने अन्य परियोजनाओं में भी फाइलों को 'पोस्ट' आरपीसी एंड पॉइंट पर डाउनलोड करने के लिए छेड़छाड़ की है जो प्रदान की गई बाइनरी स्ट्रिंग को एक प्रदान किए गए माइम प्रकार के साथ डाउनलोड के रूप में दर्शाती है, जो वास्तव में अच्छी तरह से काम करती है – aqm

+0

तो मुझे लगता है कि आपको पोस्ट को संपादित करना होगा। शामिल करें कि यह ie8 के लिए काम करता है। –