이미지 여러 장을 골라 올렸는데 업로드가 거절됐어요. 화면은 선택을 받아들였고 허용 크기 안내도 있었지만 실제로 파일은 들어가지 않았어요. 사용자는 이미지를 올리려던 일을 멈추고 파일을 다시 줄여야 하는지, 한 장씩 고르면 되는지부터 판단해야 했어요.
처음에는 여러 파일을 한 번에 골랐다는 사실이 원인처럼 보였어요. 하나의 큰 요청으로 합쳐졌다면 적게 선택하는 것으로 해결할 수 있을 것 같았죠. 그런데 확인해 보니 화면은 이미 파일을 한 장씩 보내고 있었어요. 선택한 개수와 실패의 원인이 같은 것은 아니었어요.

화면의 안내와 실제 조건이 달랐어요
파일은 저장을 처리하는 단계에 닿기 전에 거절되고 있었어요. 화면에서 허용한다고 설명한 크기와 실제로 통과할 수 있는 조건이 맞지 않았어요. 이 상태에서 같은 파일을 다시 고르거나 천천히 올리라고 하면 사용자가 시행착오로 조건을 찾아야 해요.
그래서 파일을 받아들이는 흐름 자체를 살폈어요. 새 이미지와 여러 장의 이미지, 기존 이미지의 새 버전을 올리는 경우가 서로 다른 안내를 갖더라도 같은 문제를 만날 수 있었어요. 한 화면에서만 고치면 다른 입구에서는 같은 실패가 남을 수 있었어요.
원본 역할의 파일과 썸네일을 업로드에 맞는 상태로 다루고, 서버에서도 같은 조건을 확인하도록 수정했어요. 여기서 중요했던 것은 모든 파일을 성공처럼 표시하는 것이 아니었어요. 처리할 수 없는 항목은 그 항목의 실패로 남기고 이미 성공한 다른 항목까지 한꺼번에 실패로 만들지 않도록 했어요.

실패를 살필 때 여러 장을 선택했다는 사용자 행동과 실제 전송 방식을 구분했어요. 한 번에 고른 이미지가 많았다는 이유로 전송도 한꺼번에 이루어졌다고 단정하면 원인을 잘못 찾을 수 있어요. 실제로 각 파일은 나뉘어 처리되고 있었고, 파일을 받아들이는 조건과 화면에서 안내한 범위를 맞춰야 했어요.
개별 실패를 읽는 방식도 바꿀 필요가 있었어요. 여러 파일을 고른 상황에서 하나가 실패했는데 전체가 같은 실패로 보이면 사용자는 어느 파일을 다시 처리해야 하는지 알기 어려워요. 성공과 실패를 파일별로 남기고 다음 행동을 찾을 수 있게 하는 것이 처리 변경과 함께 필요했어요.

원본이라는 표현도 주의해서 읽었어요. 큰 이미지를 제공하는 역할을 남긴다는 것과 최초 파일의 형식을 그대로 보존한다는 것은 같은 약속이 아니었어요. 내부 처리 방법을 자세히 소개하는 대신 공개 화면이 제공하는 이미지와 미리보기가 어떤 역할을 하는지에 맞춰 설명했어요.
실패가 한 장에 머물 수 있어야 했어요
여러 장을 올리는 사용자는 각 이미지가 어디까지 진행됐는지 알고 싶어요. 전부 실패했다는 큰 안내만 있으면 다시 올릴 범위를 알기 어려워요. 처리한 항목과 실패한 항목을 구분하는 것은 파일을 줄이는 기술만큼 필요한 흐름이었어요. 이미 올린 자료를 사용자가 다시 고르게 만들 이유는 없었어요.
다만 파일을 다루는 방식이 바뀌면 보존하려는 목적도 함께 확인해야 해요. 화면에서 쓰기 좋은 이미지와 원본 그대로 남겨야 하는 자료는 다른 요구일 수 있어요. 이번 수정이 모든 형식의 원본 보관 문제까지 해결한 것으로 읽히면 범위가 넓어져요. 처리할 수 없는 형식과 별도 보관이 필요한 경우는 남겨 두었어요.
구현을 마친 시점에는 아직 운영에 반영하지 않은 상태였어요. 이후 다시 확인하는 과정에서 로컬 변경만 있다는 사실을 짚고, 후속으로 실제 배포까지 이어졌어요. 이 두 단계를 한 번의 완료로 줄이면 왜 같은 화면에서 계속 실패를 볼 수 있었는지 설명이 빠져요.
기록에는 브라우저에서 파일 처리를 확인하고 운영 목록과 화면이 정상으로 열리는 것을 확인한 결과가 있어요. 하지만 실제 운영 자료를 새로 쓰는 인증 업로드 시험은 실행하지 않았어요. 따라서 여러 이미지의 실제 업로드가 모두 성공했다고 닫을 수는 없어요. 수정과 배포, 실제 등록 성공은 확인이 다른 단계였어요.
이번에 바꾼 것은 사용자가 실패 원인을 파일 선택 횟수로 추측해야 하던 부분이었어요. 실제로 막힌 조건을 찾아 처리 범위와 안내를 맞췄어요. 다음 확인은 처음 실패한 사용 순서를 같은 환경에서 끝까지 따라가는 일이에요. 그 확인 전까지는 구현한 개선과 남은 등록 검증을 함께 남겼어요.

