2012-12-17 22 views
13

Seçilen bir dosyayı MongoDB'ye kaydetmek istiyorum. MongoDB'ye eklemek için dosyayı BSON nesnesine doğru şekilde nasıl ekleyebilirim? Yaklaşımım yanlışsa, lütfen doğru yönde ilerleyin.Bir dosyayı MongoDB'ye nasıl kaydederim?

Müşteri kodu aşağıdadır. Bu jQuery işlevleri, her giriş alanında metni toplar (dosya kısmındaki yardıma gereksinim duyar) ve bir BSON nesnesi olarak sunucuya gönderir.

$('#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); 
      }); 

formun 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 sunucu tarafında kod: Kullanmak denemelisiniz MongoDB dosyaları saklamak için

#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 

cevap

9

GridFS
yapabilirsiniz GridFS (example) ile çalışma hakkında bazı eğiticiler bulabilirsiniz.
Eğer BSON içine dosyaları gömmek sadece olabilir, senin MongoDB Sürücü API kontrol edin ve dosya yeterince (16 altında megabayt) küçük ise yerine GridFS karmaşıklığını ekleyerek, projenizde

+1

GridFS hakkında okuyorum, ancak GridFS'ye kaydetmek için dosyayı istemciden sunucuya nasıl gönderileceğini gösteren bir örnek bulamıyorum. Herhangi bir kaynak var mı? – crzrcn

+1

Node.js'de iyi değilim, ancak bazı eğiticilere bakabilirsiniz (https://gist.github.com/1071705 ve http://prazjain.wordpress.com/2012/04/18/upload-and -display-dosya içinde-nodejs-uygulama /). Bu öğreticilerde, dosyaları düzenli bir dosya sistemine kaydederler ve 'fs' ile' GridFS' kodunu –

+1

değiştirmelisiniz. Öncelikle, kodunuzun çalıştığından emin olmak için dosya sisteminize dosya yüklemeyi deneyin. Ve daha sonra "GridFs" –

23

bunu uygulamaya çalışıyorum belgeler.

BSON, sürücülerin herhangi birinin erişim sağlaması için ikili bir veri türüne sahiptir.

Dosyanız bir metin dosyasıysa, bunu bir UTF8 dizesi olarak saklayabilirsiniz.

+2

Örnek bu tür nasıl kullanılacağını gösterir misiniz? Dosya sistemimde dosya var - veritabanına nasıl yazılır? – gstackoverflow

+0

Ayrıca Gridfs – adi

+0

olmadan küçük dosyalar yüklemek için herhangi bir iyi dokümantasyon veya örnek almadım. Sürücü ikili veri türünü bir dosyadaki verilerle kullanma hakkında yeni bir soru gönderebilirsiniz. – paulmelnikow

İlgili konular