दिलचस्प पोस्ट
कई पैटर्न के आधार पर फ़ाइलों का नाम बदलने का बेहतर तरीका Jquery के साथ एकाधिक divs दिखाएँ / छिपाएँ जावास्क्रिप्ट / jQuery के साथ स्टाइलशीट (एक <link>) को निकालकर या बदलना स्प्रिंग एमवीसी: रिसेप्शनबॉडी में छवि कैसे लौटाएगी? Android स्रोत कोड में क्या मतलब है? आईओएस सफारी – ओपरकाप को अक्षम कैसे करें लेकिन स्क्रॉल करने वाली डिवाइज को सामान्य रूप से स्क्रॉल करने की अनुमति दें? जावा में मार्कर इंटरफेस का क्या उपयोग है? स्पार्क डेटाफ्रेम के एक ही कॉलम पर एकाधिक सकल परिचालन रूबी में "मुख्य" क्या है? चमेली: जैस्मीन द्वारा निर्दिष्ट समय के भीतर असिनक कॉलबैक लागू नहीं किया गया था। DEFAULT_TIMEOUT_INTERVAL संपादक / प्रदर्शन टेम्पलेट्स में अनुभागों का उपयोग करना स्ट्रिंग के बाएं हिस्से को कैसे निकालें? वहाँ ms-access में एक group_concat फ़ंक्शन है? स्थिर पुस्तकालयों को अन्य स्थिर पुस्तकालयों से जोड़ने कैसे बैच में IEnumerable के माध्यम से पाश

कोयोनर में सर्वर से फ़ाइलों के रूप में टेक्स्ट / सीएसवी सामग्री डाउनलोड करें

मैं एक नोड। जेएस सर्वर से एक csv फ़ाइल स्ट्रीम करने की कोशिश कर रहा हूँ सर्वर भाग बहुत सरल है:

 server.get('/orders' function(req, res) { res.setHeader('content-type', 'text/csv'); res.setHeader('content-disposition', 'attachment; filename='orders.csv'); return orders.pipe(res); // assuming orders is a csv file readable stream (doesn't have to be a stream, can be a normal response) } 

मेरे कोण नियंत्रक में मैं ऐसा कुछ करने की कोशिश कर रहा हूं

 $scope.csv = function() { $http({method: 'GET', url: '/orders'}); }; 

इस समारोह को तब कहा जाता है जब मेरे दृश्य में ng-click बटन पर एक क्लिक होता है:

 <button ng-click="csv()">.csv</button> 

मैंने कोने में सर्वर से फाइल डाउनलोड करने के बारे में अन्य जवाबों को देखा है, लेकिन मेरे लिए काम करने वाले कुछ भी नहीं मिला। ऐसा करने का एक आम तरीका है? ऐसा लगता है कि सरल होना चाहिए

वेब के समाधान से एकत्रित समाधान "कोयोनर में सर्वर से फ़ाइलों के रूप में टेक्स्ट / सीएसवी सामग्री डाउनलोड करें"

$http सेवा एक promise देता है जो नीचे दिखाए गए अनुसार दो कॉलबैक विधियां हैं

 $http({method: 'GET', url: '/someUrl'}). success(function(data, status, headers, config) { var anchor = angular.element('<a/>'); anchor.attr({ href: 'data:attachment/csv;charset=utf-8,' + encodeURI(data), target: '_blank', download: 'filename.csv' })[0].click(); }). error(function(data, status, headers, config) { // handle error }); 

इस मुद्दे के बारे में वेब पर अधिकतर संदर्भ इस बात को बताते हैं कि आप 'बॉक्स से बाहर' एजेक्स कॉल के जरिए फाइल डाउनलोड नहीं कर सकते हैं। मैंने (हैश) समाधानों को देखा है, जिसमें इफ्रेम और समाधान भी शामिल हैं जैसे @ डीकोडस्मिथ के काम और पूरी तरह से व्यवहार्य हैं।

यहाँ एक और उपाय है जो मैंने पाया है कि कांगारू में काम करता है और बहुत तेज है।

इस दृश्य में , <a> निम्न तरीके से टैग के साथ csv डाउनलोड बटन लपेटो:

 <a target="_self" ng-href="{{csv_link}}"> <button>download csv</button> </a> 

( target="_self वहाँ ध्यान दें, यह एनजी-एप के अंदर का कोणीय रूटिंग को अक्षम करने के लिए महत्वपूर्ण है इसके बारे में यहां )

आपके नियंत्रक के अंदर आप निम्न तरीके से csv_link को परिभाषित कर सकते हैं:

 $scope.csv_link = '/orders' + $window.location.search; 

( $window.location.search वैकल्पिक है और यदि आप अपने सर्वर से अतिरिक्त खोज क्वेरी पास करना चाहते हैं तो ओएलएल)

अब हर बार जब आप बटन पर क्लिक करते हैं, तो उसे डाउनलोड करना शुरू कर देना चाहिए।

 var anchor = angular.element('<a/>'); anchor.css({display: 'none'}); // Make sure it's not visible angular.element(document.body).append(anchor); // Attach to document anchor.attr({ href: 'data:attachment/csv;charset=utf-8,' + encodeURI(data), target: '_blank', download: 'filename.csv' })[0].click(); anchor.remove(); // Clean it up afterwards 

यह कोड मोज़िला और क्रोम दोनों को काम करता है

यह मेरे लिए IE 11+, फ़ायरफ़ॉक्स और क्रोम के लिए काम किया गया है। सफारी में यह एक फाइल डाउनलोड करता है लेकिन अज्ञात के रूप में और फ़ाइल नाम सेट नहीं है।

 if (window.navigator.msSaveOrOpenBlob) { var blob = new Blob([csvDataString]); //csv data string as an array. // IE hack; see http://msdn.microsoft.com/en-us/library/ie/hh779016.aspx window.navigator.msSaveBlob(blob, fileName); } else { var anchor = angular.element('<a/>'); anchor.css({display: 'none'}); // Make sure it's not visible angular.element(document.body).append(anchor); // Attach to document for FireFox anchor.attr({ href: 'data:attachment/csv;charset=utf-8,' + encodeURI(csvDataString), target: '_blank', download: fileName })[0].click(); anchor.remove(); } 

कोणीय 1.5.9 का उपयोग करना

मैंने इसे सीसीवी फ़ाइल डाउनलोड यूआरएल के लिए खिड़की पर स्थान सेट करके इस तरह काम किया। परीक्षण और क्रोम और आईई 11 के नवीनतम संस्करण के साथ काम करना।

कोणीय

  $scope.downloadStats = function downloadStats{ var csvFileRoute = '/stats/download'; $window.location = url; } 

एचटीएमएल

 <a target="_self" ng-click="downloadStats()"><i class="fa fa-download"></i> CSV</a> 

Php में प्रतिक्रिया के लिए निम्न शीर्ष लेख सेट करें:

 $headers = [ 'content-type' => 'text/csv', 'Content-Disposition' => 'attachment; filename="export.csv"', 'Cache-control' => 'private, must-revalidate, post-check=0, pre-check=0', 'Content-transfer-encoding' => 'binary', 'Expires' => '0', 'Pragma' => 'public', ];