快速结论:该报错通常出现在通过 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 执行,确保一致性。
参考来源
AI 工具推荐
想把多个 AI 模型放在一个入口?
GamsGo AI 集成 ChatGPT、DeepSeek、Gemini、Claude、Midjourney、Veo 等常用模型,适合写作、绘图、视频和日常 AI 工作流。
推广链接:通过此链接购买,我可能获得佣金,不影响你的价格。
这个方案解决了吗?
可以继续搜索完整报错,或查看同一工具的其他排查指南。


