multer를 이용해서 이미지 파일을 몽고db에 데이터로 저장
-multer: 이미지, 동영상 같은 여러 가지 파일들을 업로드할 때 사용하는 미들웨어
-캔버스 기능 코드를 낱말 맞추기 기능 코드와 같은 파일에 병합
config - <multer.js> : multer 미들웨어 지정
-diskStorage: 하드디스크에 업로드 파일을 저장
-destination: 저장할 경로
-filename: 저장할 파일명
-originalname: 원래 이름으로 지정
-storage: 저장할 공간에 대한 정보 설정
const multer = require("multer"); //multer 모듈을 불러옴
const storage = multer.diskStorage({ //파일 저장을 위한 설정을 정의
destination: (req, file, cb) => {
cb(null, "file/"); //이미지 저장 경로를 file 파일로 지정
},
filename: (req, file, cb) => {
cb(null, file.originalname); //저장할 때 이미지의 원래 이름으로 저장
},
});
const upload = multer({ storage: storage }); //저장할 공간의 정보를 지정
module.exports = { upload };
model - <gameModel.js> : 이미지 스키마
const mongoose = require("mongoose");
const Schema = mongoose.Schema;
const gameSchema = new Schema({
title: {
type: String,
},
image: {
type: String,
},
});
module.exports = mongoose.model("Game", gameSchema);
controller - <gameController.js> : 이미지 데이터 생성
(...)
const Game = require("../model/gameModel");
const upload = require("../config/multer");
(...)
//Post Image, /image
const postImage = asynchHandler(async (req, res) => {
const { title } = req.body;
const image = req.file.filename;
const game = await Game.create({ title, image });
res.status(201).send({ message: "등록되었습니다." });
});
module.exports = { postCanvas, postImage };
route - <gameRoute.js> : 이미지 생성 라우터
-upload.single: 업로드할 파일의 필드 이름을 지정
const express = require("express");
const router = express.Router();
const { postCanvas, postImage } = require("../controller/gameController");
router.route("/canvas").post(postCanvas);
router.route("/image").post(upload.single("image"), postImage);
module.exports = router;
app.js
const express = require("express");
const cors = require("cors");
const dbConnect = require("./config/dbConnect");
const app = express();
dbConnect();
app.use(cors());
app.use(express.json());
app.use(express.urlencoded({ extended: true }));
app.use("/", require("./route/userRoute"));
app.use("/", require("./route/postRoute"));
app.use("/", require("./route/gameRoute"));
app.listen(5000, () => {
console.log("5000 포트에서 서버 실행 중");
});
'프로젝트 > 한글 게임' 카테고리의 다른 글
10. 이미지 데이터 가져오기 (0) | 2024.04.18 |
---|---|
9. 이미지, 낱말 데이터 등록 (0) | 2024.04.17 |
7. 이미지 텍스트 인식 (0) | 2024.04.14 |
6. Google Vision API (0) | 2024.04.14 |
5. 선 한 획 씩 삭제하기 (0) | 2024.04.11 |