dify需实时处理多格式文档并生成下载链接:先在数据集启用pdf/docx/xlsx/txt解析,pptx需额外安装依赖;再创建doc_encode代码工具进行base64编码;最后通过文件上传→编码→http上传至临时服务→提取url四步链路实现自动下载。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

用户上传PDF、Word、Excel等多格式文档后,Dify需立即完成文本提取、编码处理,并生成可直接下载的临时文件链接,整个过程不能依赖手动触发或后台队列延迟。
配置Dify工作区支持多格式解析
进入Dify控制台 → 左侧导航栏点击【应用】→ 选择目标应用 → 点击右上角【设置】→ 在「数据集」选项卡中开启「启用文档解析」开关。
勾选PDF、DOCX、XLSX、TXT四种格式,【未勾选的格式将被静默丢弃,不报错也不提示】。若需支持PPTX,必须额外安装python-pptx依赖并重启Dify服务容器,否则上传后解析失败且日志无明确报错。
编写自定义编码函数(Python)
在Dify应用的「工具」模块中新建工具,名称填“doc_encode”,类型选「代码工具」,语言选Python。
粘贴以下代码:
```python
import base64
import io
from typing import Dict, Any
def execute(file_path: str) -> Dict[str, Any]:
with open(file_path, "rb") as f:
content = f.read()
encoded = base64.b64encode(content).decode("utf-8")
return {"encoded_content": encoded, "filename": file_path.split("/")[-1]}
```
这一步操作起来很简单,直接把代码复制进去就行。注意不要修改函数名execute,Dify只认这个入口函数名。
构建实时处理链路
第一步:在应用编排画布中,拖入「文件上传」组件,设置「允许格式」为全部已启用格式,勾选「自动触发后续流程」。
第二步:将「文件上传」输出连接至「代码工具」节点,选择刚创建的doc_encode工具。
第三步:添加「HTTP请求」组件,方法选POST,URL填Dify内置临时文件服务地址:/v1/files/upload,Body使用JSON模板:
{"content": "{{doc_encode.encoded_content}}", "filename": "{{doc_encode.filename}}.encoded"}
第四步:从HTTP响应中提取data.url字段,作为最终输出内容返回给用户。
这四步缺一不可。如果跳过第三步直接返回base64字符串,用户无法下载;如果未在HTTP请求中设置Content-Type为application/json,服务会返回400错误且不说明具体原因。










