사용스택
next.JS, typeScript, sass, axios, formidable
추가. multer, next-connect
프론트에서 file input으로 data 받기
이미지 구현방식은 useRef로 DOM에 접근해서 이미지파일을 가져오고
onChange를 걸어서 이미지 미리보기가 자동으로 바뀌게 구현할 것 이다.
1) useRef로 DOM에 접근하여 file 데이터 받아오기
삭제하기를 누를시에 e.current.value를 삭제시켜서 파일 이름이 뜨지 않도록 한다.
2) onChange를 이용한 미리보기 구현
추가적으로 Blob을 base64로 변환시키는 코드도 구현해보았다
프론트에서 서버로 이미지 전송하기 (axios)
서버에서 이미지 받아서 저장하기
node.js에서는 multer를 사용했는데 next에서는 multer를 사용하기 어려웠다.
따라서 formidable를 사용하여 formData를 parse했다.

이미지를 서버로 보내면 지정된 path에 이미지 파일이 생긴것을 볼 수 있다.
단, 텍스트는 바로 파일로 저장되지않는다.
추가 multer 와 next-connect 를 사용한 middle ware구현
nextJS에서 express처럼 미들웨어를 구현하여 file parse를 하려고 공식문서를 찾아보았지만
nextJS의 내장 미들웨어는 res를 NextRequest 타입으로 받는데 서버 res는 타입을 NextApiRequest로 받아서
서로 타입이 안맞았다. nextJS 내장 미들웨어가 서버 api 미들웨어로는 부적합하다고 생각되어 다른 방식을 찾던중
next-connect라는 서드파티 미들웨어 라이브러리를 찾았다
next-connect를 쉽게 말하자면 nextJS를 express처럼 사용 할 수 있게 해준다
이를 적용한 코드이다.
client
server
파일위치는 src/api/upload.ts 이다
next-connect를 잘 사용한다면 미들웨어를 통하여 코드 재사용이 편할 것 같다. 공식 문서를 더 읽어볼 필요성을 느꼇다.
참고
