본문 바로가기
프로젝트/한글 게임

8. multer

by 갱생angel 2024. 4. 15.

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