Voglio salvare un file selezionato dall'utente in MongoDB. Come aggiungo correttamente il file all'oggetto BSON per aggiungerlo a MongoDB? Se il mio approccio non è corretto, ti preghiamo di indicare la direzione giusta.Come posso salvare un file su MongoDB?
Di seguito è riportato il codice cliente. Queste funzioni jQuery raccolgono il testo (necessita di aiuto sulla parte del file) su ogni campo di input e lo invia al server come oggetto BSON.
$('#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);
});
Il HTML del modulo:
<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>
Il codice lato server in 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
Ho letto su GridFS, ma non riesco a trovare un esempio che mostra come inviare il file dal client al server per salvarlo in GridFS. Hai qualche fonte? – crzrcn
Non sono bravo in Node.js, ma puoi consultare alcuni tutorial (https://gist.github.com/1071705 e http://prazjain.wordpress.com/2012/04/18/upload-and -display-file-in-nodejs-application /). In questo tutorial salvano il file su un normale filesystem, e dovresti sostituire 'fs' con il codice' GridFS' –
Prima di tutto, prova a caricare il file sul tuo file system per assicurarti che il tuo codice funzioni. E poi sostituirlo con 'GridFs' –