개발/Web

[JS] 서버에 이미지 보내기

유훈 | Yuhun 2022. 1. 20. 04:41
반응형

서버와 json으로 통신은 편리하지만 이미지가 들어가면 조금 복잡해진다..

FormData를 이용해 보내야 한다.

 

 

const handleImage = () =>{

const formData = new FormData(); // FormData 생성
formData.append('multer에서 쓸 이름', event.target.files[0]);
        
// formData는 그냥 콘솔로 안보여서 value 확인하는 방법
// console.log(formData) 하면 아무것도 안나온다.
// for (let value of formData.values()) { 
// 	console.log(value);
// }

// 서버에 formData 보내기
const response = await axios.post('/api~~', formData);

}

 

 

여기부터 출처 multer github

https://github.com/expressjs/multer/blob/master/doc/README-ko.md

 

이제 form 데이터를 받아와 서버에서 multer 라이브러리를 이용해 처리 할 수 있다.

먼저 라이브러리를 설치해 준다,

yarn add multer

이제 multer를 사용할 js 파일로 가서 

const upload = multer({
	storage: multer.diskStorage({
		destination: function (req, file, cb) {
			cb(null, '파일을 저장할 폴더 directory');
		},
		filename: function (req, file, cb) {
			cb(null, '저장될 파일의 이름을 정함');
		},
	}),
});


router.post('/api', upload.single('위에서 append한 것'), (req, res) => {
	// 이제 req.file을 불러와 안에 있는 값들을 사용할 수 있다.
});

 

 

req.file 에서 불러올 수 있는 것

fieldname 폼에 정의된 필드 명  
originalname 사용자가 업로드한 파일 명  
encoding 파일의 엔코딩 타입  
mimetype 파일의 Mime 타입  
size 파일의 바이트(byte) 사이즈  
destination 파일이 저장된 폴더 DiskStorage
filename destination 에 저장된 파일 명 DiskStorage
path 업로드된 파일의 전체 경로 DiskStorage
buffer 전체 파일의 Buffer MemoryStorage

 

이를 이용해 이미지 업로드 및 사용이 가능하다.

반응형