포시코딩

[fs] 하위 폴더 생성 with. multer 본문

Node.js

[fs] 하위 폴더 생성 with. multer

포시 2023. 1. 4. 17:47
728x90

문제 발생

const multer = require('multer');
const moment = require('moment');
const fs = require('fs');
const storage = multer.diskStorage({
  destination: './src/public/uploads/orders',
  filename: (req, file, cb) => {
    file.originalname = Buffer.from(file.originalname, 'latin1').toString('utf8');
    cb(null, moment().format('YYYYMMDDHHmmss') + '_' + file.originalname);
  },
});

multer 사용중 destination에 명시한 폴더가 존재하지 않을 경우 

에러가 발생하는게 확인되었다.

 

해결 방법

const multer = require('multer');
const moment = require('moment');
const fs = require('fs');
const storage = multer.diskStorage({
  destination: (req, file, cb) => {
    const path = './src/public/uploads/orders';
    fs.mkdirSync(path, { recursive: true });
    cb(null, path);
  },
  filename: (req, file, cb) => {
    file.originalname = Buffer.from(file.originalname, 'latin1').toString('utf8');
    cb(null, moment().format('YYYYMMDDHHmmss') + '_' + file.originalname);
  },
});

fs를 불러오고 (npm에서 다운받을 필요 없음)

destination을 위와 같이 함수로 처리하는 과정에서 저장할 위치 path에 대해 

fs.mkdirSync()를 실행시킨다.

 

따로 폴더의 존재 여부를 가릴 필요 없이

존재하지 않으면 폴더를 생성하고

이미 존재하면 그냥 그대로 해당 위치에 이미지 저장이 잘 되는 것을 확인할 수 있다.

728x90