Risposte:
Si prega di consultare GridFS documenti per i dettagli sulla memorizzazione di tali dati binari.
Il supporto per la tua lingua specifica dovrebbe essere collegato nella parte inferiore dello schermo.
"Dovresti sempre usare GridFS per archiviare file di dimensioni superiori a 16 MB" - Quando dovrei usare GridFS?
I documenti MongoDB BSON sono limitati a 16 MB. Pertanto, se la dimensione totale dell'array di file è inferiore a quella, è possibile memorizzarli direttamente nel documento utilizzando il tipo di dati BinData .
Video, immagini, PDF, fogli di calcolo, ecc. - Non importa, sono tutti trattati allo stesso modo. Spetta all'applicazione restituire un'intestazione del tipo di contenuto appropriata per visualizzarli.
Consulta la documentazione di GridFS per maggiori dettagli.
http://blog.mongodb.org/post/183689081/storing-large-objects-and-files-in-mongodb
C'è un plugin Mongoose disponibile su NPM chiamato mongoose-file. Ti consente di aggiungere un campo file a uno schema Mongoose per il caricamento di file. Non l'ho mai usato ma potrebbe rivelarsi utile. Se le immagini sono molto piccole, puoi Base64 codificarle e salvare la stringa nel database.
installa sotto le librerie
var express = require(‘express’);
var fs = require(‘fs’);
var mongoose = require(‘mongoose’);
var Schema = mongoose.Schema;
var multer = require('multer');
connetti il tuo mongo db:
mongoose.connect(‘url_here’);
Definire lo schema del database
var Item = new ItemSchema(
{ img:
{ data: Buffer, contentType: String }
}
);
var Item = mongoose.model('Clothes',ItemSchema);
utilizzando il middleware Multer per caricare la foto sul lato server.
app.use(multer({ dest: ‘./uploads/’,
rename: function (fieldname, filename) {
return filename;
},
}));
invia req al nostro db
app.post(‘/api/photo’,function(req,res){
var newItem = new Item();
newItem.img.data = fs.readFileSync(req.files.userPhoto.path)
newItem.img.contentType = ‘image/png’;
newItem.save();
});
var upload = multer({dest: "./uploads"});
var mongo = require('mongodb');
var Grid = require("gridfs-stream");
Grid.mongo = mongo;
router.post('/:id', upload.array('photos', 200), function(req, res, next){
gfs = Grid(db);
var ss = req.files;
for(var j=0; j<ss.length; j++){
var originalName = ss[j].originalname;
var filename = ss[j].filename;
var writestream = gfs.createWriteStream({
filename: originalName
});
fs.createReadStream("./uploads/" + filename).pipe(writestream);
}
});
Dal tuo punto di vista:
<form action="/" method="post" enctype="multipart/form-data">
<input type="file" name="photos">
Con questo codice è possibile aggiungere immagini singole o multiple in MongoDB.
Questo ha funzionato per me,
base64
, vedere stackoverflow.com/questions/11442356 ho anche trovato menge.io/2015/03/24/storing-small-images-in- mongodb un ottimo punto di partenza.