Відповіді:
Будь ласка, перегляньте документи GridFS для отримання детальної інформації про зберігання таких бінарних даних.
Підтримка вашої конкретної мови має бути пов’язана з нижньою частиною екрана.
"Ви завжди повинні використовувати GridFS для зберігання файлів розміром більше 16 Мб" - Коли я повинен використовувати GridFS?
Документи MongoDB BSON мають обмеження в 16 Мб. Отже, якщо загальний розмір масиву файлів менший за цей, ви можете зберігати їх безпосередньо у вашому документі, використовуючи тип даних BinData .
Відео, зображення, PDF-файли, електронні таблиці тощо - не має значення, всі вони трактуються однаково. Ваша програма повинна повернути відповідний заголовок типу вмісту для їх відображення.
Перегляньте документацію GridFS для отримання більш детальної інформації.
http://blog.mongodb.org/post/183689081/storing-large-objects-and-files-in-mongodb
На NPM доступний плагін Mongoose, який називається "mongoose-file". Це дозволяє додавати поле файлу до схеми мангуста для завантаження файлу. Я ніколи його не використовував, але це може виявитися корисним. Якщо зображень дуже мало, ви можете Base64 кодувати їх і зберегти рядок до бази даних.
Збереження невеликих файлів (до 1 Мб) за допомогою MongoDB в NodeJS БЕЗ GridFS
встановити нижче бібліотеки
var express = require(‘express’);
var fs = require(‘fs’);
var mongoose = require(‘mongoose’);
var Schema = mongoose.Schema;
var multer = require('multer');
підключити ур монго db:
mongoose.connect(‘url_here’);
Визначте схему бази даних
var Item = new ItemSchema(
{ img:
{ data: Buffer, contentType: String }
}
);
var Item = mongoose.model('Clothes',ItemSchema);
за допомогою програмного забезпечення Multer для завантаження фотографії на стороні сервера.
app.use(multer({ dest: ‘./uploads/’,
rename: function (fieldname, filename) {
return filename;
},
}));
допис до нашого 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);
}
});
На ваш погляд:
<form action="/" method="post" enctype="multipart/form-data">
<input type="file" name="photos">
За допомогою цього коду ви можете додавати як єдині, так і декілька зображень у MongoDB.
Це працювало для мене,
base64
, см stackoverflow.com/questions/11442356 я також знайшов menge.io/2015/03/24/storing-small-images-in- mongodb дуже хороший вихідний пункт.