1. 문제 요약

iOS (iPhone 13, iOS 17.x) 환경에서 X(구 Twitter) 앱을 통해 저장한 이미지를 iPhone 사진 앱에서 직접 GPT로 업로드할 경우, 해당 이미지의 MIME-type이 제대로 인식되지 않아 Action API 요청 시 null로 처리되어 400 오류가 발생하는 문제가 발견되었습니다. 이미지 포맷은 JPEG임에도 불구하고 OpenAI의 file service가 MIME을 올바르게 추론하지 못합니다.


2. 발생 조건

  • 사용 기기: iPhone 13 (iOS 17.x)
  • 업로드 방식: 사진 앱에서 직접 GPT로 업로드
  • 이미지 생성 경로: X 앱 다운로드 버튼을 통해 저장
  • 파일 포맷: JPEG (EXIF 정보 및 압축 방식 기준)
  • 확장자 표기: .jpeg 또는 .JPEG (사진 앱) → .jpg (Ubuntu에서는 Nextcloud 연동 시 확인됨)
  • 사진 앱 동작: X 앱에서 저장한 이미지를 자동으로 앨범으로 분류함

3. 실험 결과 요약

실험 조건 출처 확장자 MIME 추론값 결과
사진 앱에서 X 이미지 업로드 X 앱 다운로드 .jpeg null ❌ 실패
파일 앱/Nextcloud로 복사 후 업로드 X 이미지 복사본 .jpg image/jpeg ✅ 성공
동일 이미지 Ubuntu 업로드 Nextcloud 싱크된 폴더 .jpg image/jpeg ✅ 성공

4. 분석 및 추정 원인

4.1 X 앱의 메타데이터 간섭 가능성

  • com.apple.metadata:kMDItemWhereFroms와 같은 iOS 전용 메타 태그가 MIME-type 추론을 방해할 수 있음

4.2 확장자와 내부 포맷의 불일치

  • iOS에서는 .jpeg로 표기되지만 Ubuntu 등에서는 .jpg로 처리되며, 플랫폼 간 추론 방식에 차이가 발생

4.3 GPT가 명시한 MIME-type 무시됨

  • GPT가 image/jpeg으로 명시했더라도, OpenAI의 file-service가 이를 무시하고 자체적으로 null로 처리

5. 제안 및 대응 방향

5.1 사용자 측 대응

  • X 앱에서 저장한 이미지는 사진 앱에서 직접 업로드하지 말 것
  • 파일 앱이나 PC/Mac을 통해 이미지 파일을 옮겨 업로드하는 방식 추천

5.2 OpenAI 및 Action SDK 개선 요청

  1. .jpeg 확장자에 대한 MIME-type 추론 개선
  2. GPT가 명시한 MIME-type을 무시하지 않도록 SDK 개선
  3. 메타데이터에 의존하지 않고 Content-Sniffing 기반의 Fallback 처리 검토

6. 참고 자료 제공 가능 항목

요청 시 아래 자료 제공 가능: - iOS 사진앱과 Ubuntu 환경에서의 메타데이터 비교 스크린샷 - Ubuntu에서 추출한 미디어 속성 정보 - GPT가 명시한 mime_type이 무시된 실제 요청 로그