[mongodb] MongoDB 데이터베이스에 이미지 저장

텍스트가 아닌 MongoDB 데이터베이스에 이미지를 어떻게 저장할 수 있습니까? MongoDB 데이터베이스에서 이미지 배열을 만들 수 있습니까? 비디오에 대해 동일한 작업을 수행 할 수 있습니까?



답변

이러한 이진 데이터 저장에 대한 자세한 내용은 GridFS 문서를 참조하십시오 .

특정 언어에 대한 지원은 화면 하단에 연결되어 있어야합니다.


답변

“16MB보다 큰 파일을 저장하려면 항상 GridFS를 사용해야합니다”-GridFS는 언제 사용해야합니까?

MongoDB BSON 문서 는 16MB로 제한됩니다. 따라서 파일 배열의 전체 크기가 이보다 작 으면 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-file이라는 Mongoose 플러그인이 있습니다. 파일 업로드를 위해 파일 필드를 몽구스 스키마에 추가 할 수 있습니다. 나는 그것을 사용한 적이 없지만 유용 할 수 있습니다. 이미지가 매우 작은 경우 Base64로 인코딩하여 문자열을 데이터베이스에 저장할 수 있습니다.

NodeJS WITH GridFS없이 MongoDB를 사용하여 작은 (1MB 미만) 파일 저장


답변

스크립트 언어를 사용하여 MongoDB에 파일 / 이미지를 저장하는 경우 bin 데이터 유형을 사용할 수 있습니다. Bin 데이터는 작은 크기의 파일을 저장하기 위해 개발되었습니다.

스크립팅 언어 드라이버를 참조하십시오. PHP의 경우 여기를 클릭 하십시오 .


답변

라이브러리 아래에 설치

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에서 단일 이미지와 여러 이미지를 추가 할 수 있습니다.