반응형
//multer선언
var storage = multer.diskStorage({
//경로 설정
destination: function (req, file, cb) {
fs.readdir("./public/companyimages/" + req.body.companynum + "/" + req.body.submanagerid, (error) => {
if (error) {
console.error("회사파일 생성");
fs.mkdirSync("./public/companyimages/" + req.body.companynum + "/" + req.body.submanagerid);
cb(null, "./public/companyimages/" + req.body.companynum + "/" + req.body.submanagerid);
}else{
cb(null, "./public/companyimages/" + req.body.companynum + "/" + req.body.submanagerid);
}
});
},
//실제 저장되는 파일명 설정
filename: function (req, file, cb) {
//파일명 설정을 돕기 위해 요청정보(req)와 파일(file)에 대한 정보를 전달함
if (req.files.visafilesrc) {
for (let i = 0; i < (req.files.visafilesrc).length; i++) {
cb(null, "visafile" + (i + 1) + ".pdf");
}
}
if (req.files.profilesrc) {
for (let i = 0; i < (req.files.profilesrc).length; i++) {
cb(null, "profile" + (i + 1) + ".pdf");
}
}
}
});
//서버로 보낸 데이터 받기 (formdata 의 데이다 이며, formdata.append('companynum',데이터).. 아래 name에 들어간 key값으로 구성된 데이터 전송
router.post('/registercompanymemberfiles', multer({ storage: storage}).fields([{ name: 'companynum' }, { name: 'submanagerid' }, { name: 'visafilesrc' }, { name: 'profilesrc' }]), (req, res) => {
console.log(req.body);
});
이전 글에서 multer의 한계점에 대해서 포스팅을 했다.
이전 포스팅에서는 multer를 사용하면 유동적인 경로 설정이 불가능 하다 적었지만,
역시 더 공부를 해보니 유동적인 경로 설정을 하는 방법을 알아냈다.
하지만, 만약 다른 종류의 경로를 원한다면 새로운 storage1,2,3,,... 등등을 선언해서 그에 맞는 종류의 유동적인 경로 설정이 가능한
함수를 제작해야 한다.
하지만 위의 제공된 코드를 분석하여 기능을 예측하고 응용 한다면 왠만한 경로 설정을 자유롭게 한개의 함수로 작업이 가능할 것으로 생각된다.
여기서 핵심적인 내용은, multer을 통하여 자바스크립트에서 선언한 formData의 정보들을 사용할 수 있다는 점과(평범하게 post하면 nudifine이 나온다. 그래서 사용불가)
multer을 이용하면 자동으로 formData안의 정보를 텍스트(body), 파일(file) 을 구분해준다.
만약 한개의 key값에 여러 파일이 있다면 req.files를 하고 하나라면 req.file 이렇게 선언하여 정보를 이용하면 된다.
multer에 대한 공부를 2일동안 약 15시간 정도 한 결과가 이정도라 살짝 아쉽긴 하지만, 덕분에 서버데이터 전송에 대한 왠만한 작업을 할 수 있게 되었다.
반응형
'IT기술(코딩) > nodejs' 카테고리의 다른 글
자바스크립트 express multer 다중파일 여러파일 이미지 업로드 할때 한개만 업로듣 되는현상 (0) | 2023.09.23 |
---|---|
multer 사용시에 [Violation] handler took 발생 현상 원인 및 조치 자바스크립트 1. (0) | 2023.08.30 |
nodejs multer의 한계점 (1) | 2023.07.17 |
코틀린 stompclient.kt 에 호환되는 nodejs websocket server code 가장 최신 stomp 라이브러리 git https://github.com/bishoybasily/stomp 에서 제공되는 포멧에수정 하여 사용 중 (0) | 2023.06.18 |
nodejs 8080 포트 80 번포트로 리디렉션하기 (0) | 2023.06.03 |