일단 똑같은 주제로 글싸서 ㅈㅅ하구여
(문제)
사용자가 첨부파일을 올린 상태에서
게시글을 쓰다가, 게시글을 안올리고 브라우저를 닫을 때
스토리지엔 파일이 올라갓으나 게시글이 없어
첨부파일이 쓸모가 없어져버림
**글쓰기와 동시에 첨부파일을 올리면 안되냐고 하시던데
글쓰기 도중 에디터에 실시간으루 삽입이 가능해야 함뉘다...
(해결안)
1) 사용자가 첨부 파일 스토리지에 업로드한다
2) 첨부 파일 ID를 따서 세션에 저장해놓는다
3) 글쓰기가 정상적으로 완료댓을 때에만
세션에 저장된 첨부ID를 삭제한다.
3-1) 글쓰기가 정상적으로 이루어지지않으면 세션에 첨부파일ID가 잔류하게 댐.
4) 사용자가 브라우저가 닫으면,
세션에 남아잇는 첨부파일ID이 있을 경우,
ID를 따서 스토리지에 삭제 요청 보내고 세션파기
가 제가 생각해본건댜
어떠한지 프갤분들의 고견을 듣고십숩니다...
p.s. 첨부파일을 base64 인코딩하라는건 제가 빡통이라 이해를 잘 몬하엿습니다.. ㅠ
또 본문이 너무 길어지다보니... 글쓰기 에디터가 뻑나네유ㅠ
현재 디비 스키마에 따라서 로릭이 달라짐... 스키마를 보지 않으면 콕 찝어서 평가할 수 없음..
에를 들어서 1) 업로드한 파일을 디비에 넣는지 2) 파일은 디스크에 저장하고 디비 테이블에는 경로 정보만 저장하는지... 뭐 이런거...
1) 업로드한 파일은 S3같은 외부 스토리지 서버로 들어갑니다... API를 통해 통신하는데 업로드가 끝나면 업로드 파일 고유ID와 URL이 JSON형식으로 돌아옵니다. 2) 그래서 DB 칼럼에는 그 업로드된 파일 고유 ID만 저장됩니다...
결론부터 말하면 새벽시간에 고아가된 파일들을 배치로 털어내는 구조로.. 일단 posts(게시글) : files(첨부파일) 이 1:N이라는 가정하에.... files 에는 디비가 부여해주는 Pk가 있고, 소속 게시글을 참조하는 fk가 있고, 스토리지가 부여한 고유id를 담는 컬럼이 있다는 전제 하에...
아 쓰기 힘드네 ㅋㅋㅋ 그러니까 글 작성하면서 업로드해놓고 글쓰기를 포기해버려서 고아가 된 애들을 바로바로 지우려 하지 말고 매일 또는 매주 정해진 한가한 시간에 배치가 돌면서 싹 정리하는 식으로.. 디비에는 "이놈은 고아입니다" 라는 표시만 해두는걸로... 뭐 이런 방식도 있다는거..
이렇게 모아서 한번에 정리한다는 결정은 1) 파일 업로드까지 해놓고 글쓰기를 포기하는 사람은 많지 않을 것이다 2) 고아가 된 파일도 그리 많지 않다...라는 가정하에... 근데 살펴봤더니 이런 씹새들이 굉장히 많으면, 전략을 바뀌야 할듯... 스토리지 용량이 모자랄 수 있다든지 이런 상황도 감안을 채야 하고...
캄사합니다sensei ㅠㅠ... 말씀대로 휴지통 역할하는 테이블을 따로 만들어야 겟숩니다 ㅠㅠ... 스토리지가 저장된 용량 + API 콜 횟수당 과금되는 형식이라 빈번히 삭제 쿼리보내는 건 힘들것같네용..ㅠㅠ
그외에도 이런 전략도 가능함 1) 첨부파일이 들어오면 로컬 디스크에 받아놓음 2-1) 최종적으로 글쓰기 완료가 이루어지면 외부 스토리지로 다 올리고 나서 로컬 파일을 지우든가 말든가.. 2-2) 글쓰기 로직이 취소되면 뒤처리 따로 할게 없을듯... 이럴경우 첨부파일이 "전송중"이라는걸 화면에서 보여줘야 할 수도 있음.