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
'programing' 카테고리의 다른 글
Swagger JSON을 RAML/YAML로 변환 (0) | 2023.03.15 |
---|---|
JSON을 반환하는 GET 요청은 기본적으로 허용되지 않는 이유는 무엇입니까? (0) | 2023.03.15 |
XHR에서 응답 Content-Type 헤더를 가져옵니다. (0) | 2023.03.15 |
Oracle SQL Developer에서 쿼리 결과를 csv로 내보내는 방법 (0) | 2023.03.15 |
BEGIN_ARRAY가 필요한데 1행 2에 BEGIN_OBJECT가 있었습니다. (0) | 2023.03.15 |