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