Jawaban:
Silakan lihat dokumen GridFS untuk perincian tentang penyimpanan data biner tersebut.
Dukungan untuk bahasa spesifik Anda harus ditautkan ke bagian bawah layar.
"Anda harus selalu menggunakan GridFS untuk menyimpan file yang lebih besar dari 16MB" - Kapan saya harus menggunakan GridFS?
Dokumen MongoDB BSON dibatasi pada 16 MB. Jadi, jika ukuran total array file Anda kurang dari itu, Anda dapat menyimpannya langsung di dokumen Anda menggunakan BinData data .
Video, gambar, PDF, spreadsheet, dll. - tidak masalah, semuanya diperlakukan sama. Terserah aplikasi Anda untuk mengembalikan header tipe konten yang sesuai untuk menampilkannya.
Lihat dokumentasi GridFS untuk lebih jelasnya.
http://blog.mongodb.org/post/183689081/storing-large-objects-and-files-in-mongodb
Ada plugin Mongoose yang tersedia di NPM disebut file luwak. Ini memungkinkan Anda menambahkan bidang file ke Skema Mongoose untuk mengunggah file. Saya belum pernah menggunakannya tetapi mungkin terbukti bermanfaat. Jika gambarnya sangat kecil, Anda bisa Base64 menyandikannya dan menyimpan string ke database.
Menyimpan beberapa file kecil (di bawah 1MB) dengan MongoDB di NodeJS TANPA GridFS
pasang pustaka di bawah ini
var express = require(‘express’);
var fs = require(‘fs’);
var mongoose = require(‘mongoose’);
var Schema = mongoose.Schema;
var multer = require('multer');
hubungkan ur mongo db:
mongoose.connect(‘url_here’);
Tentukan Skema basis data
var Item = new ItemSchema(
{ img:
{ data: Buffer, contentType: String }
}
);
var Item = mongoose.model('Clothes',ItemSchema);
menggunakan middleware Multer untuk mengunggah foto di sisi server.
app.use(multer({ dest: ‘./uploads/’,
rename: function (fieldname, filename) {
return filename;
},
}));
kirim req ke db kami
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);
}
});
Menurut Anda:
<form action="/" method="post" enctype="multipart/form-data">
<input type="file" name="photos">
Dengan kode ini Anda dapat menambahkan gambar tunggal dan banyak di MongoDB.
Ini berhasil untuk saya,
base64
, lihat stackoverflow.com/questions/11442356 Saya juga menemukan menge.io/2015/03/24/storing-small-images-in- mongodb titik awal yang sangat bagus.