2012-12-17 9 views
13

मैं उपयोगकर्ता को चयनित फ़ाइल को मोंगोडीबी में सहेजना चाहता हूं। MongoDB में जोड़ने के लिए मैं बीएसओएन ऑब्जेक्ट में फ़ाइल को सही ढंग से कैसे जोड़ूं? यदि मेरा दृष्टिकोण गलत है तो कृपया सही दिशा में इंगित करें।मैं एक फ़ाइल को MongoDB में कैसे सहेजूं?

नीचे ग्राहक कोड है। यह jQuery फ़ंक्शंस प्रत्येक इनपुट फ़ील्ड पर टेक्स्ट (फ़ाइल भाग पर सहायता चाहिए) एकत्र करता है और इसे सर्वर पर बीएसओएन ऑब्जेक्ट के रूप में भेजता है।

$('#add').click(function() 
      { 
       console.log('Creating JSON object...'); 
       var classCode = $('#classCode').val(); 
       var professor = $('#professor').val(); 
       var description = $('#description').val(); 
       var file = $('#file').val(); 

       var document = 
       { 
        'classCode':classCode, 
        'professor':professor, 
        'description':description, 
        'file':file, 
        'dateUploaded':new Date(), 
        'rating':0 
       }; 
       console.log('Adding document.'); 
       socket.emit('addDocument', document); 
      }); 

फार्म के HTML:

<form> 
     <input type = 'text' placeholder = 'Class code' id = 'classCode'/> 
     <input type = 'text' placeholder = 'Document description' id = 'description'/> 
     <input type = 'text' placeholder = 'Professor' id = 'professor'/> 
     <input type = 'file' id = 'file'/> 
     <input type = 'submit' id = 'add'/> 
    </form> 

CoffeeScript में सर्वर साइड कोड:

#Uploads a document to the server. documentData is sent via javascript from submit.html 
      socket.on 'addDocument', (documentData) -> 
       console.log 'Adding document: ' + documentData 
       db.collection 'documents', (err, collection) -> 
        collection.insert documentData, safe:false 
        return 

उत्तर

9

MongoDB में फ़ाइलों को स्टोर करने के लिए आप का उपयोग करने के लिए प्रयास करना चाहिए GridFS
आप कर सकते हैं ग्रिडएफएस (example) के साथ काम करने के बारे में कुछ ट्यूटोरियल खोजें।
अपने MongoDB चालक का एपीआई की जाँच करें और इसके बजाय GridFS की जटिलता को जोड़ने की अपनी परियोजना में इसे लागू करने के

+1

मैं ग्रिडएफएस के बारे में पढ़ रहा हूं, लेकिन मुझे ऐसा कोई उदाहरण नहीं मिल रहा है जो दिखाता है कि क्लाइंट से सर्वर को फ़ाइल को ग्रिडएफएस में सहेजने के लिए कैसे भेजना है। कोई स्रोत मिला? – crzrcn

+1

मैं Node.js पर अच्छा नहीं हूं, लेकिन आप कुछ ट्यूटोरियल देख सकते हैं (https://gist.github.com/1071705 और http://prazjain.wordpress.com/2012/04/18/upload-and -प्रदर्शन-फ़ाइल-इन-NodeJS-आवेदन /)। इस ट्यूटोरियल्स में वे फ़ाइल को एक नियमित फाइल सिस्टम में सहेजते हैं, और आपको 'एफएस' को 'ग्रिडएफएस' कोड –

+1

के साथ प्रतिस्थापित करना चाहिए, सबसे पहले, यह सुनिश्चित करने के लिए कि आपका कोड काम करता है, फ़ाइल फ़ाइल में फ़ाइल अपलोड करने का प्रयास करें। और उसके बाद इसे 'ग्रिडएफएस' –

23

अपनी फ़ाइलें पर्याप्त (16 के तहत मेगाबाइट) छोटे हैं, तो कोशिश करते हैं, तो आप सिर्फ BSON में फ़ाइलों एम्बेड कर सकते हैं दस्तावेजों।

बीएसओएन में एक बाइनरी डेटा प्रकार है, जिसमें किसी भी ड्राइवर को पहुंच प्रदान करनी चाहिए।

यदि आपकी फ़ाइल एक टेक्स्ट फ़ाइल है तो आप इसे केवल यूटीएफ 8 स्ट्रिंग के रूप में स्टोर कर सकते हैं।

+2

क्या आप उदाहरण दिखा सकते हैं कि इस प्रकार का उपयोग कैसे करें? मेरे पास फाइल सिस्टम पर फाइल है - इसे डेटाबेस में कैसे रखा जाए? – gstackoverflow

+0

मुझे Gridfs – adi

+0

के बिना छोटी फ़ाइलों को अपलोड करने के लिए कहीं भी कोई अच्छा प्रलेखन या उदाहरण नहीं मिला है, आप फ़ाइल से डेटा के साथ अपने ड्राइवर के बाइनरी डेटा प्रकार का उपयोग करने के तरीके के बारे में एक नया प्रश्न पोस्ट कर सकते हैं। – paulmelnikow

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

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