2010-10-26 7 views
5

मुझे जेएस में क्लाइंट साइड पर डेटा का एक गुच्छा मिला है। मैं उपयोगकर्ता को डेटा को स्थानीय हार्ड ड्राइव (सीएसवी वास्तव में) प्रारूप में सहेजने की अनुमति देना चाहता हूं।"डाउनलोड" (बिना किसी नए सर्वर राउंड-ट्रिप के)

मैं इस डेटा को AJAX का उपयोग कर सर्वर पर पोस्ट करके आसानी से पूरा कर सकता हूं, फिर डेटा डाउनलोड करने के लिए क्लाइंट से एक GET शुरू कर सकता हूं। लेकिन यह अपमानजनक लगता है। विशेष रूप से यदि डेटा बड़ा है।

ग्राहक के पास पहले से ही डेटा है - मैं निश्चित रूप से उन्हें दिखा सकता हूं, और उन्हें अपने पसंदीदा टेक्स्ट एडिटर में कॉपी/पेस्ट करने की अनुमति देता हूं - लेकिन यह एक बहुत अच्छा यूआई नहीं है।

मैं उन्हें डेटा को स्थानीय फ़ाइल में सहेजने की अनुमति देना चाहता हूं। मैं यहां सुरक्षा निहितार्थों को समझता हूं।

मुझे विश्वास है कि यह डेटाोरल का उपयोग करके संभव है, लेकिन (धन्यवाद एमएस), इसे आईई 7 और 8 में काम करना है .. तो यह बाहर है।

कोई भी ऑफ-द-बॉक्स विचार?

+0

यहां एक संबंधित प्रश्न है (http://stackoverflow.com/questions/921037/jquery-table-to-csv-export)। वे एक सर्वर राउंड-ट्रिप कर रहे हैं जो मुझे एहसास है कि आदर्श नहीं है, लेकिन निश्चित रूप से काम करेगा। – dana

उत्तर

1

इस विशिष्ट सेटअप के लिए काम करेगा नहीं है, लेकिन यह उन पंक्तियों के साथ कुछ ..

http://decafbad.com/2009/07/drag-and-drop/api-demos.html#data_transfer

<!DOCTYPE HTML> 
<html lang="en"> 
<head> 
    <title>Drag and Drop --> Text File</title> 
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> 
    <meta http-equiv="Content-Language" content="en-us" /> 
    <script type="text/javascript" src="jquery.js"></script> 

    <script type="text/javascript"> 
     $(document).ready(function() { 
      // Set up the draggable element. 
      $('#data_transfer').bind('dragstart', function(ev) { 
       if (!$(ev.target).hasClass('dragme')) return true; 
       var dt = ev.originalEvent.dataTransfer; 
       dt.setData('text/plain', $('#source').text()); 
       return true; 
      }); 
     }); 
    </script> 

    <style type="text/css"> 
     .dragme { 
      border: 1px solid #000; 
      background-color: #decafb; 
      padding: 10px; 
     } 
    </style> 
</head> 

<body> 
    <div id="data_transfer"> 
     <textarea id="source">Blah! I'm a textarea!</textarea> 
     <p><span class="dragme" draggable="true">Drag Me to your Desktop!</span></p> 
    </div> 
</body> 
</html> 
+0

यह दिलचस्प है, हालांकि कई समस्याएं हैं: 1) यह आईई में काम नहीं करता है। 2) यह मुझे आउटपुट फ़ाइल नाम सेट करने की अनुमति नहीं देगा - मैक पर, यह बस इसे "टेक्स्टक्लिंग" फ़ाइल कहता है। 3) मुझे इसे ड्रैग/ड्रॉप इवेंट पर न होने की भी आवश्यकता है, जिसके लिए स्थान बचाने के लिए फ़ाइल सहेजने की आवश्यकता होगी। – desau

3

Downloadify करता है। इसे फ्लैश की आवश्यकता है।

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

+0

यह निश्चित रूप से किसी भी एक्सटेंशन के साथ संभव है .. फ्लैश, एक्टिव-एक्स, सिल्वरलाइट, जावा एप्लेट, इत्यादि आदि। मुझे किसी भी अतिरिक्त प्लगइन की आवश्यकता नहीं है। – desau

+0

@desau मुझे नहीं लगता कि यह अतिरिक्त प्लगइन के बिना किया जा सकता है, अन्यथा डाउनलोड करने की आवश्यकता नहीं होगी .... –

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