답변:
이러한 이진 데이터 저장에 대한 자세한 내용은 GridFS 문서를 참조하십시오 .
특정 언어에 대한 지원은 화면 하단에 연결되어 있어야합니다.
"16MB보다 큰 파일을 저장하려면 항상 GridFS를 사용해야합니다"-GridFS는 언제 사용해야합니까?
MongoDB BSON 문서 는 16MB로 제한됩니다. 따라서 파일 배열의 전체 크기가 이보다 작 으면 BinData 데이터 형식을 사용하여 문서에 직접 저장할 수 있습니다 .
비디오, 이미지, PDF, 스프레드 시트 등은 중요하지 않으며 모두 동일하게 취급됩니다. 적절한 컨텐츠 유형 헤더를 리턴하여 표시하는 것은 애플리케이션에 달려 있습니다.
자세한 내용 은 GridFS 설명서 를 확인하십시오.
http://blog.mongodb.org/post/183689081/storing-large-objects-and-files-in-mongodb
NPM에는 mongoose-file이라는 Mongoose 플러그인이 있습니다. 파일 업로드를 위해 파일 필드를 몽구스 스키마에 추가 할 수 있습니다. 나는 그것을 사용한 적이 없지만 유용 할 수 있습니다. 이미지가 매우 작은 경우 Base64로 인코딩하여 문자열을 데이터베이스에 저장할 수 있습니다.
라이브러리 아래에 설치
var express = require(‘express’);
var fs = require(‘fs’);
var mongoose = require(‘mongoose’);
var Schema = mongoose.Schema;
var multer = require('multer');
몽고 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 는 아주 좋은 출발점입니다.