WEBBOOK CHAPTER

반응형 웹을 진짜 앱으로: 34장. 카메라에서 서버 영수증까지 추적한다

34장. 카메라에서 서버 영수증까지 추적한다

촬영 파일이 격리, 정규화, 오프라인 큐, 업로드와 서버 대사를 거치는 흐름
촬영 파일이 격리, 정규화, 오프라인 큐, 업로드와 서버 대사를 거치는 흐름

촬영 전에 목적과 권한을 설명한다. 결과 URI를 받으면 decode 가능 여부, pixel·byte 한도, orientation, MIME/magic bytes를 확인한다. EXIF 위치·기기 정보는 정책에 따라 제거하고 원본을 그대로 gallery에 남기지 않는다. 정규화한 파일에 SHA-256과 local asset id를 부여한다.

점검 metadata를 먼저 local DB에 transaction으로 저장하고 사진은 app private storage에 둔다. queue에는 inspection id, asset id, checksum, size, retry와 upload 상태를 기록한다. presigned upload 뒤 완료 API가 object checksum·사용자·site ownership을 확인하고 receipt를 반환한다. receipt 전에는 local 파일을 지우지 않는다.

실패 실습은 촬영 취소, 권한 거부, 저장 공간 부족, 앱 종료, 깨진 JPEG, 업로드 99% network 단절, 서버 성공 뒤 응답 단절이다. 재실행 뒤 사진은 한 번만 연결되고 orphan object가 없어야 한다. UI에는 “사진 있음”이 아니라 local·upload·server confirmed 상태를 구분해 보여 준다.