Detected file type does not match the specified type. Please verify the file.

用户使用 Dify 1.7.1 自托管版本,通过 Service API(后端 API)以 remote_url 方式传入一张 JPG 图片( "type": "jpg" ),但 API 返回该错误。图片 URL 来自 AWS S3,用户确认图片可正常访问。

快速结论:此报错通常出现在通过 Dify Service API 上传远程图片或文件时,指定的 type 参数(如 jpg)与 Dify 实际检测到的文件类型(基于扩展名或 MIME)不一致。优先检查文件 URL 是否包含正确的扩展名、MIME 类型,或改用 /files/upload 上传方式。

问题场景

用户使用 Dify 1.7.1 自托管版本,通过 Service API(后端 API)以 remote_url 方式传入一张 JPG 图片("type": "jpg"),但 API 返回该错误。图片 URL 来自 AWS S3,用户确认图片可正常访问。

报错原文

{
  "code": "invalid_param",
  "message": "Detected file type does not match the specified type. Please verify the file."
}

原因分析

根据 Issue 讨论和关联 PR(#23641#23880),Dify 对 Service API 调用强制开启了严格类型校验(strict_type_validation=True)。当以下三个条件同时满足时触发该错误:

  1. strict_type_validation=True:通过 Service API(invoke_from=InvokeFrom.SERVICE_API)调用时自动启用。
  2. specified_type 非空:请求中显式指定了 type: "jpg"(或默认值 "custom")。
  3. 检测到的真实类型与指定类型不匹配:Dify 根据文件扩展名或 MIME 类型推断出实际类型(如 DOCUMENT),与指定的 jpg 不一致。

可能原因:S3 URL 可能缺少正确的文件扩展名(如未以 .jpg 结尾),或 S3 返回的 MIME 类型不是 image/jpeg,导致 Dify 无法正确识别为图片类型。

环境排查

  • Dify 版本:1.7.1(确认是否已升级到包含相关修复的最新版本)
  • 调用方式:Service API(invoke_from=InvokeFrom.SERVICE_API
  • 文件来源:远程 URL(AWS S3 预签名 URL)
  • 图片格式:JPG(需确认实际 MIME 类型)
  • Docker 环境变量:MULTIMODAL_SEND_IMAGE_FORMATbase64url)、FILES_URL(需外部可访问)

解决步骤

  1. 检查文件 URL 扩展名:确保远程图片 URL 以 .jpg.jpeg 结尾。如果 URL 不含扩展名,Dify 不会回退到 MIME 类型检测,会直接触发报错(参考 #23876)。
  2. 验证 MIME 类型:使用浏览器或 curl -I 检查图片 URL 的响应头 Content-Type,确保为 image/jpeg。如果 S3 或代理返回了 application/octet-stream 或其他类型,需要修复源站配置。
  3. 改用 /files/upload 上传:可优先尝试。先通过 /files/upload 接口上传图片获取 file_id,然后在 API 请求中使用该 file_id 代替 remote_url。这可以绕过远程文件类型检测的逻辑。
  4. 检查支持的格式与大小:Dify 支持 JPG、JPEG、PNG、GIF、WEBP、SVG 格式,文件大小需在 10 MB 以内。
  5. 尝试修改 type 参数:如果上述步骤无效,可尝试将 API 请求中的 type 参数设为 "document""custom" 作为临时工作区(参考 #19083)。
  6. 检查日志确认校验来源:在 Dify 后端日志中搜索 strict_type_validation=Trueinvoke_from=InvokeFrom.SERVICE_API,确认是否为 Service API 调用触发的严格校验。

验证方法

重新发起相同的 API 请求,确认不再返回 "Detected file type does not match the specified type" 错误,并且成功获取到预期响应(如图片内容被正常处理)。同时检查 Dify 后端日志,确认没有文件类型相关的 WARNINGERROR 日志。

参考来源

langgenius/dify #24438
langgenius/dify #23641 – 严格类型校验 PR
langgenius/dify #23880 – Service API 条件校验逻辑
langgenius/dify #23876 – 无扩展名 URL 不降级到 MIME 检测
langgenius/dify #19083 – 使用 documentcustom type 的 workaround

GamsGo AI

AI 工具推荐

想把多个 AI 模型放在一个入口?

GamsGo AI 集成 ChatGPT、DeepSeek、Gemini、Claude、Midjourney、Veo 等常用模型,适合写作、绘图、视频和日常 AI 工作流。

了解 GamsGo AI

推广链接:通过此链接购买,我可能获得佣金,不影响你的价格。

这个方案解决了吗?

celebrityanime
celebrityanime
文章: 24522

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注