programing

MongoDB 데이터베이스에 이미지 저장

stoneblock 2023. 3. 15. 17:47

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 플러그인을 사용할 수 있습니다.Mongoose Schema에 파일 필드를 추가하여 파일을 업로드할 수 있습니다.써본 적은 없지만 도움이 될 수도 있어요.이미지가 매우 작을 경우 Base64로 인코딩하여 데이터베이스에 저장할 수 있습니다.

GridFS가 없는 NodeJS에 MongoDB가 있는 작은(1MB 미만) 파일 저장

라이브러리 아래에 설치하다

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);

미들웨어 Multer를 사용하여 서버 측에 사진을 업로드합니다.

app.use(multer({ dest: ‘./uploads/’,
  rename: function (fieldname, filename) {
    return filename;
  },
}));

post req를 우리의 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();
});

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

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

당신은 MongoDB에 파일을 저장할 수 있습니까?

네.

MongoDB에 파일을 저장해야 합니까?

아니요.


MongoDB는 파일을 저장하는 데 적합하지 않습니다.파일을 저장하려면 Amazon S3 또는 Google Could Storage와 같은 스토리지를 사용해야 합니다.

파일을 저장소에 저장한 후 업로드한 이미지의 URI를 MongoDB에 저장하는 것이 좋습니다.

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

언급URL : https://stackoverflow.com/questions/4796914/store-images-in-a-mongodb-database