Хранение изображений в базе данных MongoDB



Как я могу хранить изображения в базе данных MongoDB, а не просто текст? Могу ли я создать массив изображений в базе данных MongoDB? Можно ли будет сделать то же самое для видео?

1233   7  

7 ответов:

смотрите GridFS docs для получения подробной информации о хранении таких двоичных данных.

поддержка вашего конкретного языка должна быть связана с в нижней части экрана.

"вы всегда должны использовать GridFS для хранения файлов размером более 16 МБ" -когда я должен использовать GridFS?

MongoDB документы BSON ограничены на 16 МБ. Поэтому, если общий размер вашего массива файлов меньше, вы можете хранить их непосредственно в своем документе, используя BinData тип данных.

видео, изображения, PDF-файлы, электронные таблицы и т. д. - это неважно, они все одинаковые. Это зависит от вашего приложение для возврата соответствующего заголовка типа контента для их отображения.

Проверьте документация GridFS для более подробной информации.

вы можете попробовать это:

String newFileName = "my-image";
File imageFile = new File("/users/victor/images/image.png");
GridFS gfsPhoto = new GridFS(db, "photo");
GridFSInputFile gfsFile = gfsPhoto.createFile(imageFile);
gfsFile.setFilename(newFileName);
gfsFile.save();

http://blog.mongodb.org/post/183689081/storing-large-objects-and-files-in-mongodb

в NPM есть плагин Mongoose, который называется mongoose-file. Он позволяет добавить поле файла в схему Мангуста для загрузки файлов. Я никогда не использовал его, но это может оказаться полезным. Если изображения очень маленькие, вы можете кодировать их Base64 и сохранить строку в базе данных.

хранение некоторых небольших (менее 1 МБ) файлов с MongoDB в NodeJS без GridFS

вы можете использовать тип данных bin, если вы используете любой язык сценариев для хранения файлов/изображений в MongoDB. Bin data разработан для хранения файлов небольшого размера.

обратитесь к драйверу языка сценариев. Для PHP, нажмите кнопку здесь.

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.

установить ниже библиотеки

var express = require(‘express’);
var fs = require(‘fs’);
var mongoose = require(‘mongoose’);
var Schema = mongoose.Schema;
var multer = require('multer');

connect ur mongo db:

mongoose.connect(‘url_here’);

определить схему базы данных

var Item = new ItemSchema(
  { img: 
  { data: Buffer, contentType: String }
 }
);
var Item = mongoose.model('Clothes',ItemSchema);

использование middleware Multer для загрузки фотографии на стороне сервера.

app.use(multer({ dest: ‘./uploads/’,
rename: function (fieldname, filename) {
return filename;
},
}));

сообщение req в нашу БД

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();
});

Comments

    Ничего не найдено.