Ответы:
Пожалуйста, смотрите документацию 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. Это позволяет вам добавить поле файла в схему Mongoose для загрузки файла. Я никогда не использовал это, но это может оказаться полезным. Если изображения очень маленькие, вы можете закодировать их в 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');
подключите ур монго дб:
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;
},
}));
отправить запрос в нашу базу данных
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 очень хорошая отправная точка.