우리 기능중에 영상을 녹화하여 저장하는 기능이 있다.
이것을 DB에 저장하려고 하는데 몽고DB는 16메가 이상은 저장할 수 없기 때문에 구글링을 해본결과 Gridfs 를 통하여 chunk 로 분할하여 파일을 저장을 할 수 있다고 하여서 구현중에 있다.
오늘 하루종일 삽질해본 결과 ... 아직은 구현이 되지 않았고 감이 오지않았다. 계속해서 삽질을 해보면서 도전해봐야할거 같다.
우선 내가 작성한 코드를 적어보겠다.
const express = require("express")
const router = express.Router()
const multer = require("multer");
const { ObjectID } = require('mongodb');
const { Readable } = require('stream');
router.post('/', (req, res) => {
const storage = multer.memoryStorage()
const upload = multer({ storage: storage, limits: { fields: 1, fileSize: 6000000, files: 1, parts: 2 }});
upload.single("track")(req, res, (err) => {
if (err) {
return res.status(400).json({ message: "업로드에 실패하셨습니다." });
} else if(!req.body.name) {
return res.status(400).json({ message: "No track name in request body" });
}
const readStream = Readable.from(req.file.buffer);
const options = ({ filename: req.body.name, contenttype: 'video/mp4'});
Attachment.write(options, readStream, (err, file) => {
if (err)
return res.status(400).json({message: "Bad Request"});
else {
console.log("Posted! \n" + file.toString());
return res.status(200).json({
message: "Successfully Saved!",
file: file,
});
}
})
});
});
이런식으로 오류가 상당히 많이 나오는것을 볼 수 있다...
모르겠어... 모르겠다고...