MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

Stockez les images dans Mongodb, servez-les avec Nodejs

Je déconseille fortement de diffuser des images à partir de MongoDB.

Il serait préférable de les stocker sur un magasin de fichiers statique (S3) et peut-être de conserver le chemin dans MongoDB.

Vous utiliserez probablement l'encodage base64 pour mettre le fichier dans mongodb :http://www.greywyvern .com/code/php/binary2base64/ (ou simplement l'utilitaire shell base64).

Si vous n'utilisez que des documents normaux, le coût des performances est relativement faible (tant que la mise en cache est bonne). Si vous utilisez une base de données mixte où vous avez GridFS et des documents réguliers, vous aurez besoin de beaucoup de RAM sur votre ou vos serveurs - les requêtes GridFS s'exécuteront complètement différemment des requêtes de documents.

La conversion de l'image peut fonctionner comme ceci :

var base64Data = imagefile.replace(/^data:image\/png;base64,/,""),
var dataBuffer = new Buffer(base64Data, 'base64');

// below line won't actually work but it's something along the lines of what you want:

db.foo.insert({magic: 123, etc... img: dataBuffer.toString()})