
API Error:Detected file type does not match the specified type. Please verify the file
快速结论:该报错通常出现在通过 Dify API 上传文件并调用 Workflow 时,因上传文件返回的 MIME 类型(如 txt)与 Workflow 节点预期的合法 MIME 类型(如 text/plain)不匹配导致。优先排查上传文件返回的 mime_type 字段是否正确。
问题场景
在 Dify(版本 1.3.0 / 1.3.1)中,用户创建了一个文件分析 Workflow,并在起始节点设置了文件上传变量(sql_file)。该 Workflow 在 Web 页面中正常工作,但在通过 API 接口调用时出现错误。用户操作步骤为:
- 调用
/files/upload接口上传文件,获得成功响应; - 调用
/workflows/run接口执行 Workflow,返回 400 错误。
报错原文
{"code": "invalid_param", "message": "Detected file type does not match the specified type. Please verify the file.", "status": 400}
原因分析
可能原因:上传文件返回的 MIME 类型(mime_type)与 Workflow 节点中文件变量定义的合法类型不匹配。在 Issue 中,用户上传 .txt 文件后,/files/upload 接口返回的 mime_type 为 'txt',但 Dify 对该文件扩展名的合法 MIME 类型预期为 'text/plain'。这种不一致导致 Workflow 校验失败,触发错误。
此外,用户升级至 1.3.1 版本后问题仍未解决,说明该问题并非由特定版本引入,而是与 API 调用时的参数配置有关。
环境排查
- 确认 Dify 版本:1.3.0 / 1.3.1(Self Hosted Docker)
- 确认上传文件的扩展名和 MIME 类型:.txt 文件应返回
text/plain,而非txt - 确认
/workflows/run接口input_params中type字段的值是否与 Workflow 节点定义的文件类型一致
解决步骤
- 检查上传文件返回的 MIME 类型:
- 调用
/files/upload接口上传文件后,检查响应中的mime_type字段是否为text/plain(对于 .txt 文件)。 - 若返回
txt或其他不标准类型,说明文件上传时的 MIME 类型检测可能存在问题。
- 调用
- 确保
input_params中的type字段匹配:- 在
/workflows/run请求中,input_params里与文件变量对应的type字段值必须为合法的 MIME 类型,如text/plain。 - 可优先尝试将
type显式设置为text/plain(而非仅使用文件扩展名)。
- 在
- 调整 MIME 类型检测或显式指定:
- 如果无法修改上传服务端的 MIME 类型检测逻辑,考虑在代码中显式指定
mime_type参数为text/plain再上传。 - 检查 Dify 配置文件(如
web/app/components/develop/template/template_workflow.ja.mdx)中的 MIME 类型映射,确保文件扩展名与标准 MIME 类型对应。
- 如果无法修改上传服务端的 MIME 类型检测逻辑,考虑在代码中显式指定
验证方法
重新执行 Workflow API 调用,确认返回状态码为 2xx,且不再出现 Detected file type does not match the specified type 错误。同时可在 Web 页面中测试相同文件的上传与 Workflow 执行,确保一致性。



