작성
·
336
·
수정됨
0
const formData = new FormData();
formData.append('testimg', files[0]);
formData.append('foldername', 'testfolder');
formData.append('key1', 'value1');
axios.post('/crm/arr_image', formData, {
headers: {
'Content-Type': 'multipart/form-data'
}
}).then((res) => {
console.log('성공~~~~~~~~~~~');
}).catch((err) => {
console.log('에러입니다 에러');
console.error(err);
});
const upload = multer({
storage: multer.diskStorage({
// 경로를 설정
destination(req, file, cb) {
console.log(req);
console.log(req.body);
console.log(req.file);
console.log(req.headers);
console.log('원래 안찍히는거야? 왜 안찍혀?');
try {
fs.readdirSync(`uploads/${req.body.foldername}`);
} catch (error) {
fs.mkdirSync(`uploads/${req.body.foldername}`);
}
cb(null, `uploads/${req.body.foldername}`);
},
filename(req, file, cb) {
//파일명 설정
const ext = path.extname(file.originalname);
const filename = randomChracter(6);
console.log(filename);
cb(null, filename + Date.now() + ext);
},
}),
});
안녕하세요! 질문 있습니다!
강좌에서는 Multer 밖에다가 폴더를 체크하고 만들었었는데
폴더 이름이 프론트의 input - value 값에 있어서 요청이 들어올때마다 체크를 해줘야 해서
위처럼 만들었는데요!
이게 axios 를 사용 안하고 그냥 post 요청하면 폴더가 생성이 되는데
formData 객체를 생성해서 name - value 값을 넣어줬는데
multer 내 req.body 내에 아무것도 안찍히더라구요?? ㅠㅠ
원래 이러는건가요? 아니면 코드상에 문제가 있는걸까요??
formData.append('foldername', 'testfolder');
요 값을 multer 내 req.body로 받을수는 없는걸까요? ㅠ
답변 1
1
받을 수 있습니다.
많이들 실수하시는데 formData.append 시 이미지를 가장 마지막에 append 하셔야 합니다.
formData.append('foldername', 'testfolder');
formData.append('key1', 'value1');
formData.append('testimg', files[0]);
헐...... 순서때문이었다니..... 감사합니다!!!!!!!! ^0^