jm_p_op

multer - 파일 받기 본문

Node.js/Express

multer - 파일 받기

jm_p_op 2024. 5. 14. 14:01

참고자료-https://github.com/expressjs/multer/blob/master/doc/README-ko.md

설정

  • storage - 저장path설정
    • filename - 파일 이름
      • 시간을 넣어 독립적으로 제작
    • destination - 폴더명
      • DB별 나눠주는것이 좋음
  • limit - 파일 종류, 사이즈 등

사용

  • .single( 'input-key' )
    • req.file에 저장
  • .array( 'input-key' )
  • .fields( 'input-key' )
    • req.files에 저장
  • req.file.path가 데이터 저장된 path임으로 중요

에러 핸들링

- multerFunction(req,res(err)=>{ fun1})

  • 에러 발생시 err이 존재
  • 에러 없어도 fun1실행
  • multerFunction을 await시킨후 req.files읽어도 데이터는 사라진다.
  • fun1에서 따로 저장을 하거나, fun1에서 실행시켜야된다.
const multer = require('multer');
const path = require('path');

const upload = multer({
    storage: multer.diskStorage({
      	filename(req, file, done) {
			done(null, Date.now()+file.originalname);
        },
		destination(req, file, done) {
		    done(null, path.join(__dirname, "../uploads"));
	    },
    }),
    limits: { fileSize:
        // 1
         5 * 1024 * 1024 
        } // 5메가로 용량 제한
});

const uploadArrayImage = upload.array('image')

/
router.post('/upload',
    uploadArrayImage,
function (req, res, next) {
    console.log(req.files)
  })

/error
router.post('/upload',
    async (req,res,next)=>{
        await uploadArrayImage(req, res,(err)=>
            {if (err){
                return res.send(400)
                }
                console.log(req.files)
                return res.send(req.files.path)
            }
        )
        console.log(req.files)
        next()
    },
    (req,res)=>{()=>console.log(req.files)}
);

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

PK는 왠만하면 Auto Increment으로 잡자  (0) 2024.05.27
fk으로 잡은 pk_column 변경하기  (0) 2024.05.16
permission  (0) 2024.05.13
express - app  (0) 2024.05.09
error_message관리  (0) 2024.05.07