RECENT POSTS

최근에 작성한 글

01 / 03

전체 글

전체 보기

이미지 업로드 시 500 에러 (로컬 로그 없음)

🚫 문제 발생

  • 파일 사양: 2.15MB, PNG 확장자 (제한 조건: 5MB 이하, PNG/JPEG/PDF)
  • 증상: 업로드 시 500 Internal Server Error 발생. 서버(컨트롤러/서비스) 로그에 아무런 기록이 남지 않음.
  • 특이사항: 윈도우 파일 속성에 "다른 컴퓨터로부터 왔으며 차단되었을 수 있음" 문구 표시됨.

🔍 문제 원인

  • 가설 1: 윈도우 보안 정책(Mark of the Web)으로 인한 파일 스트림 접근 거부.
  • 가설 2: 파일 헤더(Metadata) 손상 또는 표준 규격 미달로 인해 프레임워크(Spring 등)의 멀티파트 파서에서 예외 발생.
  • 가설 3: 인프라 설정(Nginx, Tomcat 등)의 기본 업로드 용량 제한 초과.

🎯 실제 원인

해당 파일은:

  • 다운로드 과정에서 Mark of the Web가 붙은 상태
  • 내부 헤더 또는 스트림 메타 정보가 표준 PNG 구조와 다르게 저장됨

Spring Multipart 파서가 파일 스트림을 읽는 과정에서 예외 발생
→ Global Exception Handler 이전 단계에서 500 발생

그림판으로 재저장 시:

  • Zone.Identifier 제거
  • 이미지 헤더 재작성
  • 표준 PNG 포맷으로 재구성

→ 정상 업로드

✅ 해결

  • 해당 이미지를 그림판으로 열어 다른 이름으로 저장(JPEG/PNG)하여 헤더를 재구성하고 보안 속성을 제거함.
  • 재저장된 파일로 업로드 시 정상 작동 확인.

🧠 배운 점

  • 파일 업로드 실패 시 프레임워크 전역 예외 처리(Global Exception Handler)를 통해 MaxUploadSizeExceededException이나 MultipartException 로그가 찍히는지 확인 설정 추가.
  • 사용자에게 파일 보안 차단 해제 또는 재저장 가이드 제공 고려.

'Project > MetaSNS' 카테고리의 다른 글

CORS 설정  (0) 2026.03.03
JWT Weak Key Exception 발생  (0) 2026.03.03
/login?error로 리다이렉트되는 현상  (0) 2026.03.03
Hibernate Dialect 오류 발생  (0) 2026.03.03
Dockerfile과 docker-compose.yml  (0) 2026.03.03