如何在Dify工作流中解析从Web端传入的复杂Multipart表单数据

P粉328763957

P粉328763957

2026-07-31

270人浏览

原创

必须绕过dify默认json解析,改用原始二进制流+手动解包处理multipart表单:前端用enctype="multipart/form-data"提交,关闭「自动解析为json」开关,再通过代码节点调用email模块或模板转换+base64解码解析字段。

☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

如何在dify工作流中解析从web端传入的复杂multipart表单数据

要在Dify工作流中正确解析用户通过Web端提交的含文件、多级嵌套字段、重复name属性的Multipart表单数据,必须绕过默认的JSON自动解析机制,改用原始二进制流+手动解包方式处理,否则会丢失文件内容或解析出空对象。

确认表单提交方式与Dify接收机制

前端必须使用 <form enctype="multipart/form-data"></form> 提交,且不能依赖 data-format="json" 属性——该属性仅适用于纯文本表单,对 multipart 请求会直接忽略并返回空 payload。

进入工作流编辑页→点击「开始」节点→在右侧「输入字段」区域关闭「自动解析为JSON」开关(若存在),【此开关默认开启,不关闭会导致整个 multipart body 被丢弃】

此时 Dify 将原始 HTTP 请求体(含 boundary 分隔符)作为字符串传入,后续需自行解析。

方法一:用代码节点调用内置 multipart 解析器

添加「代码执行」节点→语言选 Python→在代码区粘贴以下内容:

```python
import email
from email.policy import default
from io import BytesIO

def main(input_data):
# input_data 是原始 bytes 类型请求体
if not isinstance(input_data, bytes):
input_data = input_data.encode('utf-8')
msg = email.message_from_bytes(input_data, policy=default)
result = {}
for part in msg.walk():
if part.get_content_maintype() == 'multipart':
continue
name = part.get_param('name', header='Content-Disposition')
if not name:
continue
content = part.get_payload(decode=True)
if part.get_content_maintype() == 'text':
result[name] = content.decode('utf-8').strip()
else:
result[f"{name}_binary"] = content # 保留原始二进制
return result
```

注意:此方法依赖 Dify 沙箱内置的 email 模块,无需额外安装依赖,但要求 input_data 确实为完整 multipart 字节流——若上游节点做过字符串截断或编码转换,将无法解析。

方法二:用模板转换节点预处理为标准 JSON

第一步:在「开始」节点后立即接一个「模板转换」节点。

第二步:模板内容填写为:

php获得文件的mime type类
php获得文件的mime type类

php获得文件的mime type类

下载

<script type="application/json">{{input}}</script>

第三步:勾选「启用 HTML 渲染」,并设置输出格式为「纯文本」——这会强制 Dify 将原始 multipart 请求体原样包裹进 script 标签,避免被自动转义或截断。

第四步:将该节点输出连接至「代码执行」节点,此时 input_data 已是完整原始字节的 base64 编码字符串,需先解码再解析:

```python
import base64
import email
from email.policy import default
from io import BytesIO

def main(input_data):
raw_bytes = base64.b64decode(input_data)
msg = email.message_from_bytes(raw_bytes, policy=default)
# 后续解析逻辑同方法一
```

【关键点:不能直接对 base64 字符串调用 email.message_from_string,必须先 decode 成 bytes】

提取特定字段并传递给下游节点

完成解析后,在代码节点的「输出」配置中显式声明需透传的变量:

{"user_name": "{{parsed_data.username}}", "avatar": "{{parsed_data.avatar_binary}}", "tags": "{{parsed_data.tags}}"}

其中 parsed_data 是上一步代码节点返回的字典键名;【若未在此处声明,下游所有节点均无法访问该变量】

后续 LLM 或 API 节点中引用时,直接使用 {{node_code_1.user_name}} 即可,无需加 form. 前缀——因为该数据已脱离表单输入层,属于代码节点的自定义输出。

相关文章

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

dify dify工作流

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
Dify 本地部署与企业配置
Dify 本地部署与企业配置

本专题系统讲解 Dify 从零开始的本地部署方法与企业环境配置实践,涵盖 Docker 安装、依赖准备、数据库初始化、反向代理、参数调优、安全加固与多用户开通,帮助开发者与企业团队快速搭建稳定可用的 Dify 平台。

2026.06.05

72

15

Dify Agent智能体开发实战教程
Dify Agent智能体开发实战教程

本专题聚焦 Dify Agent 智能体的设计与开发,涵盖 Agent 模式选择、工具集成、提示词设计、多步推理、上下文记忆与多 Agent 协作,帮助开发者构建可执行复杂业务任务的智能体应用。

2026.06.05

97

15

Dify RAG知识库构建实战教程
Dify RAG知识库构建实战教程

本专题围绕 Dify RAG 知识库的全流程实践展开,从文档导入、分段切片、向量化到混合检索、重排优化与召回评估,帮助你打造高准确率、低幻觉的企业知识问答应用。

2026.06.05

110

15

Selenium WebDriver元素定位与页面操作教程
Selenium WebDriver元素定位与页面操作教程

本专题整理Selenium WebDriver元素定位、XPath、CSS Selector、等待机制、窗口切换、Frame处理、Alert弹窗、Cookie操作和文件上传等核心用法。

2026.08.05

3

26

Selenium Grid分布式测试与并行执行教程
Selenium Grid分布式测试与并行执行教程

本专题整理Selenium Grid架构、远程WebDriver、并行测试、Docker部署、Kubernetes动态Grid、浏览器矩阵和测试环境扩展方法,适合进阶自动化测试团队使用。

2026.08.05

1

18

Selenium常见报错排查与自动化测试稳定性
Selenium常见报错排查与自动化测试稳定性

本专题整理Selenium常见报错、驱动版本问题、元素找不到、点击失败、等待超时、浏览器闪退、脚本不稳定和测试用例维护方法。

2026.08.05

0

17

墨刀AI提示词教学
墨刀AI提示词教学

本合集由PHP中文网精心整理,为您提供全面的墨刀AI提示词教学。内容涵盖高质量原型撰写公式与实操窍门,助您轻松掌握AI设计工具。无论是零基础入门还是进阶技巧,都能让您快速上手,大幅提升产品设计与协作效率。

2026.08.04

11

21

墨刀AI完整入门
墨刀AI完整入门

PHP中文网为您倾力打造墨刀AI保姆级入门指南完整版!本合集从零基础讲起,涵盖AI生成原型、提示词优化、图片转原型及多轮对话等核心功能。无论您是新手还是进阶用户,都能轻松掌握产品设计全流程。快来PHP中文网,一键解锁高效设计技巧,让想法即刻成型!

2026.08.04

8

20

墨刀AI进阶技巧
墨刀AI进阶技巧

本合集由PHP中文网精心整理,为您提供墨刀AI核心进阶策略指南。内容涵盖高效提示词写作、原型智能生成与微调、结构化导图制作及行业分析报告输出等实战技巧。助您轻松掌握AI设计工具,大幅提升产品设计与团队协作效率。

2026.08.04

10

14

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Dify零基础教程
Dify零基础教程

共0课时 | 100人学习

学习Agent,从Dify开始
学习Agent,从Dify开始

共0课时 | 95人学习

Dify 部署与运维指南
Dify 部署与运维指南

共0课时 | 0人学习