Dify工作流中文件二进制流与Base64编码转换

落瑶大大_1893

落瑶大大_1893

2026-10-31

724人浏览

原创

Dify工作流中需将PDF/Word等文件转Base64编码后传递:上传文件路径为user_file.0.path,用Python代码节点读取并base64编码;解码时须去除Data URI前缀,写入/tmp临时文件并校验长度。

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

dify工作流中文件二进制流与base64编码转换

在Dify工作流中处理用户上传的PDF、Word等文档时,必须将原始文件转换为Base64编码字符串,才能安全嵌入HTTP请求体或传入下游代码节点进行解析——因为Dify工作流节点间仅支持文本/JSON类型变量,【二进制文件对象无法直接跨节点传递】。

获取上传文件的本地路径

在用户输入节点配置字段类型为「文件列表」后,Dify会自动将每个上传文件保存至沙箱临时目录,并通过变量(如user_file.0.path)暴露其绝对路径。

该路径形如/tmp/dify_files/abc123.pdf,仅在当前工作流执行生命周期内有效,不可硬编码或持久化引用。

若需批量处理多个文件,请用列表操作器节点遍历user_file数组,逐个提取.path字段。

用代码节点执行Base64编码

方法一:Python内置方案(推荐)

添加「代码执行」节点,语言选Python,粘贴以下代码:

import base64<br>with open(workflow.input.file_path, "rb") as f:<br>  encoded = base64.b64encode(f.read()).decode("utf-8")<br>workflow.output({"base64_content": encoded})

注意:此处file_path需替换为上游传入的实际变量名,例如user_file.0.path;【不校验文件是否存在,路径错误将直接报错中断流程】。

方法二:JavaScript方案(适用于前端预处理或轻量场景)

若已在前端完成Base64编码,可跳过此步,直接将编码字符串作为文本变量传入工作流。Dify对字符串长度无硬性限制,但单次HTTP请求建议控制在10MB以内。

Dify
Dify

Dify AI应用开发平台指南。用于构建LLM应用、工作流、Agent和知识库。当用户需要(1)使用Dify创建AI应用 (2)设计LLM工作流 (3)配置知识库RAG (4)开发AI Agent (5)调用Dify API (6)自托管部署Dify时激活此技能。

下载

将Base64还原为二进制文件流

第一步:确认Base64字符串不含Data URI前缀

检查输入字符串是否以data:application/pdf;base64,开头。如有,必须先用.split(",")[1]截取纯Base64段,否则解码失败。

第二步:在代码节点中执行解码

Python示例:

import base64<br>import os<br>raw = workflow.input.base64_content<br>decoded = base64.b64decode(raw)<br># 生成唯一临时文件名<br>filename = f"decoded_{hash(raw[:10]) % 10000}.bin"<br>file_path = os.path.join("/tmp", filename)<br>with open(file_path, "wb") as f:<br>  f.write(decoded)<br>workflow.output({"file_path": file_path})

这一步操作起来很简单,直接把代码复制进去就行。生成的file_path可用于后续文档解析、OCR调用或HTTP上传节点。

第三步:验证文件完整性(可选但强烈建议)

在解码后追加校验逻辑:if len(decoded) == 0: raise ValueError("Base64解码结果为空"),避免空内容导致下游节点静默失败。

相关文章

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

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

下载

相关标签:

dify 二进制 dify工作流

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

相关专题

更多
WorkBuddy核心功能与实操模式
WorkBuddy核心功能与实操模式

深入探索WorkBuddy的强大功能。本专题包含智能问答、文档处理、会议纪要生成、日程管理、任务协作等核心模块的操作指南与最佳实践。通过图文并茂的教程,助您快速上手,最大化发挥WorkBuddy的办公效能。

2026.04.09

642

19

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

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

2026.06.05

877

15

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

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

2026.06.05

265

15

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

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

2026.06.05

256

15

Vite 项目如何打包和部署
Vite 项目如何打包和部署

Vite项目打包部署专题汇集生产构建、产物预览、输出目录、资源路径、Nginx与GitHub Pages部署及常见白屏和路由404问题的已审核文章,帮助读者完成上线流程。

2026.10.28

60

16

Vite 如何搭配 Vue.js
Vite 如何搭配 Vue.js

Vite搭配Vue.js专题汇集创建Vue 3项目、配置开发环境、路径别名、Vue插件、代理、多环境构建与调试的已审核文章,帮助读者完成从初始化到日常开发的配置。

2026.10.28

40

15

Vite 项目目录怎么看
Vite 项目目录怎么看

Vite项目目录专题汇集入口文件、src源码、public静态资源、路径别名、项目根目录和构建输出目录相关的已审核文章,帮助读者理解各文件夹的用途与引用方式。

2026.10.28

140

10

Gradle插件开发入门教程
Gradle插件开发入门教程

本专题介绍Gradle插件开发的基本流程,涵盖插件类编写、自定义任务注册、扩展参数设计和插件应用方法,帮助你理解插件如何组织构建逻辑,减少多个项目之间的重复配置。

2026.10.22

140

11

Gradle Wrapper配置教程
Gradle Wrapper配置教程

本专题介绍Gradle Wrapper的基本作用,涵盖文件组成、生成方法、版本配置和任务调用,帮助你理解项目如何使用指定的Gradle版本,减少不同开发环境带来的构建差异。

2026.10.22

120

10

热门下载

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

精品课程

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

共0课时 | 156人学习

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

共0课时 | 156人学习

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

共0课时 | 0人学习