- 브라우저에서 파일을 선택하고(input type의 파일: input type 태그를 사용하게 되면 파일을 선택하게 되는 창이 뜸) 확인 버튼을 누르게 되면 데이터가 들어오게 되고 그 데이터를 변수에 저장할 수 있다.
- 변수에 저장한 파일을 백엔드쪽 uploadFile이라는 API에 보내주게 되면 파일이 전송된다.(백엔드에선 받아온 파일들을 바로 DB에 저장하지 않는다.)
- 요청 받은 파일들은 storage라는 공간에 저장요청을 보낸다.
- storage에선 다시 백엔드로 저장된 파일에 접근할 수 있는 주소(URL)를 돌려준다.
- 받아온 URL을 다시 프론트엔드쪽으로 보내준다. 프론트엔드에선 받아온 URL을 state에 넣고 input 내용들을[ex: myPicture(state), myWriter, myContents] 작성해준다.
- 프론트엔드에서 작성된 데이터들을 백엔드 createBoard API에 요청을 보낸다. 이 때, [ex: myPicture(state), myWriter, myContents] 내용들이 백엔드쪽으로 받아와진다.
- 이내용들을 DB로 보내게 되면 자유게시판에 내용, 사진(주소형태)등등 저장이 된다.
- DB에서 등록된 결과를 다시 백엔드로 보내주고
- 백엔드에선 이 결과를 다시 브라우저로 보내주게 된다.
파일을 올릴 때 제약 조건을 걸어 줄 수 있다.
ex) 용량, 확장자, 파일종류 등
- 하나의 컴포넌트로 만들고 재사용하기👍
2. validation 컴포넌트 함수들이 false로 리턴되면 실행 종료, true로 반환되면 try~catch 실행