回答:
GridFSをご覧くださいこのようなバイナリデータの保存の詳細ドキュメントを参照してください。
特定の言語のサポートは、画面の下部にリンクされているはずです。
「16MBを超えるファイルを保存するには、常にGridFSを使用する必要があります」- -GridFSはいつ使用する必要がありますか?
MongoDB BSONドキュメントの上限は16 MBです。したがって、ファイルの配列の合計サイズがそれより小さい場合は、BinDataを使用してドキュメントに直接保存できます。データ型。
ビデオ、画像、PDF、スプレッドシートなど-重要ではありません。すべて同じように扱われます。それらを表示するために適切なコンテンツタイプヘッダーを返すのはアプリケーション次第です。
詳細については、GridFSのドキュメントをご覧ください。
http://blog.mongodb.org/post/183689081/storing-large-objects-and-files-in-mongodb
NPMには、mongoose-fileと呼ばれるMongooseプラグインがあります。ファイルをアップロードするために、ファイルフィールドをMongooseスキーマに追加できます。使用したことはありませんが、役に立つかもしれません。画像が非常に小さい場合は、Base64でエンコードし、文字列をデータベースに保存できます。
ライブラリの下にインストール
var express = require(‘express’);
var fs = require(‘fs’);
var mongoose = require(‘mongoose’);
var Schema = mongoose.Schema;
var multer = require('multer');
ur mongo 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
参照してください。menge.io/ 2015/03/24 / storing - small - images - in-も見つかりましたmongodbは非常に良い出発点です。