2010-03-22 12 views
13

मैं कुछ जावास्क्रिप्ट कोड लिख रहा हूं जो क्लाइंट में एक XML दस्तावेज़ उत्पन्न करता है (Google Earth plugin के माध्यम से)। मैं चाहता हूं कि उपयोगकर्ता पृष्ठ पर एक बटन क्लिक करने में सक्षम हो और उस XML को एक नई फ़ाइल में सहेजने के लिए कहा जाए। अगर मैं एक्सएमएल सर्वर-साइड उत्पन्न कर रहा था तो यह आसान होगा, बस बटन को लिंक खोलें। लेकिन एक्सएमएल क्लाइंट-साइड उत्पन्न होता है।जावास्क्रिप्ट में डाउनलोड करने के लिए मैं गतिशील रूप से दस्तावेज़ कैसे बना सकता हूं?

मैं आधे काम के साथ आया हूं, जो this StackOverflow question द्वारा भाग में प्रेरित है। लेकिन न तो पूरी तरह से काम करते हैं। यहाँ एम्बेडेड कोड के साथ एक डेमो एचटीएमएल है:

<html><head><script> 
function getData() { return '<?xml version="1.0" encoding="UTF-8"?><doc>Hello</doc>'; } 
function dlDataURI() { 
    window.open("data:text/xml;charset=utf-8," + getData()); 
} 
function dlWindow() { 
    var w = window.open(); 
    w.document.open(); 
    w.document.write(getData()); 
    w.document.close(); 
} 
</script><body> 
<div onclick="dlDataURI()">Click for Data URL</div> 
<div onclick="dlWindow()">Click for Window</div> 
</body></html> 

dlDataURI() संस्करण Firefox में अच्छा काम करता है, खराब क्रोम में (नहीं बचा सकता है), और बिल्कुल नहीं IE में। विंडो() संस्करण फ़ायरफ़ॉक्स और आईई में ठीक काम करता है, और क्रोम में अच्छी तरह से नहीं (बचा नहीं सकता है, HTML के अंदर एम्बेडेड एक्सएमएल)। कोई भी संस्करण कभी भी उपयोगकर्ता डाउनलोड को संकेत नहीं देता है, यह हमेशा एक्सएमएल प्रदर्शित करने की कोशिश कर रहा एक नई विंडो खुलता है।

क्या क्लाइंट साइड जावास्क्रिप्ट में जो करना है, उसे करने का कोई अच्छा तरीका है? मैं इसे आज के ब्राउज़र में काम करना चाहता हूं, आदर्श फ़ायरफ़ॉक्स, एमएसआईई 8, और क्रोम।

नमूना Downloadify कोड के साथ अद्यतन

window.onload = function() { 
    Downloadify.create("dlify", { 
    data: getData(), 
    filename: "data.xml", 
    swf: 'media/downloadify.swf', 
    downloadImage: 'images/download.png', 
    width: 100, height: 30});}; 
+0

यह नए स्टैक ओवरफ़्लो सवाल जवाब है कि फ्लैश की आवश्यकता नहीं है की एक बहुत कुछ है। अधिकांश में डीओएम में 'डेटा:' यूआरएल का निर्माण शामिल है। https://stackoverflow.com/questions/19721439/download-json-object-as-a-file-from-browser – Nelson

उत्तर

5

सबसे अच्छा मैं जहाँ तक देखा है DownloadifyDoug Neiner से है, यह फ्लैश की आवश्यकता है लेकिन बहुत अच्छी तरह से काम करता है:

"एक छोटे जावास्क्रिप्ट + फ्लैश लाइब्रेरी जो सर्वर पर बिना किसी इंटरैक्शन के ब्राउज़र में फ्लाई पर फ़ाइलों की पीढ़ी और बचत को सक्षम बनाता है। "

यह video देखें।

+1

ठीक है, एपीआई के चारों ओर एक रैपर मेरे उत्तर में जुड़ा हुआ है। अच्छा लगा। – spender

+0

पॉइंटर के लिए धन्यवाद, यह एक बहुत छोटी लाइब्रेरी है। मुफ्त सॉफ्टवेयर लाइसेंस, उपयोग करने के लिए अपेक्षाकृत आसान है। शर्म की आवश्यकता है फ्लैश की आवश्यकता है, लेकिन अगर जावास्क्रिप्ट का सामना नहीं कर सकता है तो मुझे आश्चर्य नहीं है। नोट: डाउनलोड फ्लैश द्वारा डिस्क पर सहेजा जाता है, यह ब्राउज़र के डाउनलोड प्रबंधक से नहीं जाता है। मैं अपने प्रश्न को कोड स्निपेट के साथ अपडेट करूँगा यह दर्शाता है कि यह लाइब्रेरी कैसे काम करती है। – Nelson

+2

ऊपर दिया गया यूआरएल मृत है। ऐसा लगता है कि आप यहां जिथब पर डाउनलोडिफ़ाई पा सकते हैं: https://github.com/dcneiner/Downloadify –

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

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