2017-05-23 6 views
13

मैं डेटा स्टोर करने के लिए एक स्थानीय इन-ब्राउज़र डेटाबेस का उपयोग कर रहा हूं। हालांकि मैं उपयोगकर्ताओं को उस डेटा को सीएसवी को निर्यात करने की क्षमता देना चाहता हूं।बहुत सारी सामग्री के साथ स्थानीय फ़ाइल डाउनलोड

जबकि गुगलिंग के दौरान मुझे डेटा यूआरएल के साथ समाधान मिला - डेटा के साथ यूआरएल तैयार करें। हालांकि मेरे मामले में यह पृष्ठ> लिंक (पृष्ठ) प्रदान किए जाने पर प्रत्येक बार उत्पन्न होने के लिए 1 एमबी डेटा होता है। क्या कोई वैकल्पिक समाधान है जो मुझे जावास्क्रिप्ट से फ़ाइल डाउनलोड करने की इजाजत देता है, लेकिन मुझे सामग्री को पहले से तैयार करने की आवश्यकता नहीं है - केवल तभी जब उपयोगकर्ता वास्तव में लिंक पर क्लिक करता है?

मामले में यह मायने रखता है कि मैं अपने आवेदन का निर्माण करने की प्रतिक्रिया का उपयोग कर रहा ..

+0

कहाँ ठीक एक है कि केवल और अधिक या कम एक ही बात (?) क्लिक पर/मांग करता है करने के लिए तैयार-अग्रिम समाधान (जो मुझे लगता है आपके पास पहले से?) परिवर्तित करने के साथ समस्या यह है ...? – CBroe

+0

यदि मैं सही ढंग से समझ गया तो आप डेटा-यूआरएल के साथ एंकर उत्पन्न करने का सुझाव दे रहे हैं जब उपयोगकर्ता ने एक और बटन क्लिक किया? फिर वास्तव में क्लिक करने के लिए जेएस का थोड़ा सा आग लगाओ? – kubal5003

+1

मैं डेटा URI को पहले 'location.href' पर असाइन करने का प्रयास करता हूं, और देखता हूं कि ब्राउज़र आपको ऐसा करने देगा ... – CBroe

उत्तर

13

एक ब्लॉब की कोशिश करो।

(नहीं, उस तरह का नहीं)

demo

var blob = new Blob(["CSV DATA HERE"], {type: "text/csv"}); 
var url = URL.createObjectURL(blob); 
open(url); 

सीएसवी करने के लिए JSON में परिवर्तित करने की आवश्यकता है?

demo

(https://stackoverflow.com/a/14966131/6560716)

var data = [["name1", "city1", "some other info"], ["name2", "city2", "more info"]]; 
var csvContent = ""; 
data.forEach(function(infoArray, index){ 
    dataString = infoArray.join(","); 
    csvContent += index < data.length ? dataString+ "\n" : dataString; 
}); 
var blob = new Blob([csvContent], {type: "text/csv"}); 
var url = URL.createObjectURL(blob); 
open(url); 

फ़ाइल का नाम है करने के लिए की आवश्यकता है?

demo

var blob = new Blob(["CSV DATA HERE"], {type: "text/csv"}); 
var url = URL.createObjectURL(blob); 
var link = document.createElement("a"); 
link.setAttribute("href", url); 
link.setAttribute("download", "filename.csv"); 
document.body.appendChild(link); 
link.click(); 

फ़ाइल का नाम और JSON?

demo

var data = [["name1", "city1", "some other info"], ["name2", "city2", "more info"]]; 
var csvContent = ""; 
data.forEach(function(infoArray, index){ 
    dataString = infoArray.join(","); 
    csvContent += index < data.length ? dataString+ "\n" : dataString; 
}); 
var blob = new Blob([csvContent], {type: "text/csv"}); 
var url = URL.createObjectURL(blob); 
var link = document.createElement("a"); 
link.setAttribute("href", url); 
link.setAttribute("download", "filename.csv"); 
document.body.appendChild(link); 
link.click(); 
+2

filesaver.js लाइब्रेरी आपके लिए बहुत कुछ करता है https://github.com/eligrey/FileSaver.js, रेपो में डेमो थोड़ा टूटा हुआ है, लेकिन मैंने इसे यहां दोहराया: https://codepen.io/anon/कलम/rwVWZQ –

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