1. 问题摘要

在 iOS (iPhone 13, iOS 17.x) 环境下,通过 X(原 Twitter) 应用 保存的图片直接在 iPhone 照片应用中上传至 GPT 时,发现该图片的 MIME-type 无法被正确识别,在 Action API 请求时处理为 null,导致出现 400 错误。虽然图片格式为 JPEG,但 OpenAI 的文件服务未能正确推断 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 的文件服务仍然可能忽视这一点,处理为 null

5. 建议与应对方向

5.1 用户方面的应对

  • 请勿在照片应用中直接上传 X 应用保存的图片
  • 推荐通过文件应用或 PC/Mac 转移图片文件进行上传

5.2 建议 OpenAI 和 Action SDK 的改进

  1. 改善对 .jpeg 扩展名的 MIME-type 推断
  2. 确保 SDK 不忽视 GPT 指定的 MIME-type
  3. 审查基于内容嗅探的回退处理,而不是依赖于元数据

6. 可提供的参考资料项

可应请求提供以下资料: - iOS 照片应用与 Ubuntu 环境下的元数据比较截图 - 从 Ubuntu 中提取的媒体属性信息 - 被忽视的 GPT 指定的 mime_type 的实际请求日志