ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • imageUpload and Multer(Javascript, Node.js)
    Javascript/Node.js and Express 2021. 7. 15. 17:40
    const multer = require("multer");
    
    //저장경로 설정 및 이름설정
    const storage = multer.diskStorage({
        destination: function (req, file, cb) {
            cb(null, "./images");
        },
        filename: function (req, file, cb) {
            cb(null, file.originalname);
        },
    });
    
    //파일형식검사 (jpeg, jpg, png, gif 허용)
    const fileFilter = (req, file, cb) => {
        if (file.mimetype === "image/jpeg" || file.mimetype === "image/jpg" ===
        file.mimetype === "image/png" || file.mimetype === "image/gif" ) {
            cb(null, true);
        } else {
            cb(new Error("이미지 파일 형식이 맞지 않습니다"), false);
        }
    };
    
    //미들웨어
    const upload = multer({
        storage: storage,
        limits: {
            fileSize: 1024 * 1024 * 5,
        },
        fileFilter: fileFilter,
    });
    
    //여러장일시 미들웨어(detail_image라는 필드네임은 10장이 최대로 설정)
    const images =  upload.fields([{ name: 'thumbnail' }, { name: 'detail_image', maxCount: 10 }])
    
    //포스트 api(1장일 경우)
    router.post('/add', upload.single(image), async (req, res) => {
    
      //파일저장경로
      const image = req.file.path
    
    })
    
    //포스트 api(여러장 겨우)
    router.post('/add', imaages, async (req, res) => {
    
      //thumbail 파일저장경로
      const thumbnail = req.files['thumbnail'][0].path
    
      //detail_images라는 빈 Array
      const detail_images = [];
    
      //detail_images라는 Array에 detail_image들의 저장 경로 입력
      req.files['detail_image'].forEach( image => detail_images.push(image.path) )
    
    })

    'Javascript > Node.js and Express' 카테고리의 다른 글

    Register and Joi(Validation)  (0) 2021.07.15
    Login, Token(JWT) and Authentication  (0) 2021.07.15
    EC2, S3 and CORS  (0) 2021.07.15
    Node.JS, Express and Javascript  (0) 2021.07.15
    Sequelize and SQL  (0) 2021.07.15
Designed by Tistory.