दिलचस्प पोस्ट
PHP $ $ (डॉलर डॉलर या डबल डॉलर) का क्या मतलब है? सेलेनियम वेबड्राइवर बाड़ी तत्व संदर्भ अपवाद को कैसे हल करें? एक आसान तरीके से लॉगिंग में त्रुटि क्लास .getResource () रिक्त देता है आईफोन एसडीके में नए फोंट को कैसे शामिल और इस्तेमाल किया जाए? AngularJS नियंत्रकों को बढ़ाने का अनुशंसित तरीका क्या है? सूची में सभी स्ट्रिंग्स को कनवर्ट करें उद्देश्य- सी वर्तमान यूटीसी को NSDate की स्थापना कमांड लाइन पर एंड्रॉइड एसडीके बिल्ड टूल कैसे स्थापित करें? इंटरफ़ेस से भौतिक इंटरफ़ेस आईपी पता कैसे प्राप्त करें मैं अपने पर्ल स्क्रिप्ट को विंडोज़ पर सामान्य कार्यक्रमों की तरह कैसे कर सकता हूं? स्विफ्ट में सेग्यू के लिए तैयार करें मैं वर्तमान स्क्रीन अभिविन्यास कैसे प्राप्त करूं? स्थानांतरित वस्तु से मैं क्या कर सकता हूं? मार्की सेट स्पीड

एक फ़ाइल डाउनलोड करने के लिए jQuery और आइफ्रेम का उपयोग करना

मेरे पास एक .csv फ़ाइल डाउनलोड करने के लिए निम्न कोड है:

$.ajax({ url: urlString, contentType: "application/json; charset=utf-8", dataType: "json", cache: false, success: function (data) { if (data) { var iframe = $("<iframe/>").attr({ src: data, style: "visibility:hidden;display:none" }).appendTo(buttonToDownloadFile); } else { alert('Something went wrong'); } } }); 

UrlString एक निस्संदेह सेवा की ओर इशारा कर रहा है जो। Csv फ़ाइल उत्पन्न करती है और फ़ाइल पथ लौटाती है जिसे आइफ्रेम के लिए src विशेषता को सौंपा गया है। यह किसी भी .csv फ़ाइलों के लिए काम करता है, लेकिन मुझे .xml फ़ाइलों के साथ समस्या हो रही है जब मैं एक ही कोड का उपयोग करता हूं लेकिन "टेक्स्ट / एक्सएमएल" पर contentType बदल रहा हूं और इसे .xml फ़ाइलों को डाउनलोड करने के लिए उपयोग करें, जो यह काम नहीं कर रहा है।

क्या मैं .xml फ़ाइलों के लिए यहां एक समान दृष्टिकोण का उपयोग कर सकता हूं?

अद्यतन करें:

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

वेब के समाधान से एकत्रित समाधान "एक फ़ाइल डाउनलोड करने के लिए jQuery और आइफ्रेम का उपयोग करना"

मैं यह अनुमान लगा रहा हूं कि समस्या यह है कि अधिकांश ब्राउज़र ब्राउज़र में एक्सएमएल को प्रस्तुत करने का प्रयास करेंगे, जबकि वे सीएसवी के लिए कोई हैंडलर नहीं रखते हैं, इसलिए उपयोगकर्ता को फ़ाइल डाउनलोड करने के लिए संकेत देने के लिए वे स्वत: डिफ़ॉल्ट होंगे। डाउनलोड को लागू करने के लिए XML फ़ाइल के हेडर संशोधित करने का प्रयास करें। ऐसा कुछ (PHP उदाहरण):

 header("Content-Type: application/force-download"); header("Content-Type: application/octet-stream"); header("Content-Type: application/download"); header('Content-Disposition: attachment; filename="some filename"'); 

यह सबसे ब्राउज़रों को फ़ाइल को खोलने का प्रयास न करने के लिए कहना चाहिए, लेकिन इसके बजाय उपयोगकर्ता फ़ाइल को डाउनलोड करने के लिए और OS को इसके साथ क्या करना है यह निर्धारित करने दें।

यदि आपके पास XML फ़ाइल में हेडर को नियंत्रित करने की कोई शक्ति नहीं है, तो आप एक सर्वर-साइड स्क्रिप्ट का उपयोग कर एक कार्य-आसपास की कोशिश कर सकते हैं। सर्वर-साइड स्क्रिप्ट में यूआरएल को पास करने के लिए जेएस का उपयोग करें:

 //build the new URL var my_url = 'http://mysite.com/load_file_script?url='+escape(path_to_file); //load it into a hidden iframe var iframe = $("<iframe/>").attr({ src: my_url, style: "visibility:hidden;display:none" }).appendTo(buttonToDownloadFile); 

और सर्वर-साइड पर (आपकी http://mysite.com/load_file_script स्क्रिप्ट) आप cURL / file_get_contents / wgets / [दूरस्थ फ़ाइलों को प्राप्त करने की कुछ अन्य तंत्र] का उपयोग दूरस्थ फ़ाइल की सामग्री को प्राप्त करने के लिए करते हैं, Content-Disposition: attachment जोड़ें Content-Disposition: attachment हेडर, और मूल फ़ाइल का कोड print करें।

आप इसे आभासी लंगर तत्व से एक डाउनलोड के रूप में भी प्रदान कर सकते हैं, भले ही डाटा क्लाइंट-साइड हो:

 /* * Create an anchor to some inline data... */ var url = 'data:application/octet-stream,Testing%20one%20two%20three'; var anchor = document.createElement('a'); anchor.setAttribute('href', url); anchor.setAttribute('download', 'myNote.txt'); /* * Click the anchor */ // Chrome can do anchor.click(), but let's do something that Firefox can handle too // Create event var ev = document.createEvent("MouseEvents"); ev.initMouseEvent("click", true, false, self, 0, 0, 0, 0, 0, false, false, false, false, 0, null); // Fire event anchor.dispatchEvent(ev); 

http://jsfiddle.net/D572L/