ComfyUI-Sundaybox上传下载插件
# ComfyUI-Sundaybox 上传下载插件

ComfyUI 原生上传通常不是“任意文件上传器”,而是围绕图片等常见输入:
- 前端在节点(如
LoadImage)里选择本地文件 - 浏览器把文件
POST到 ComfyUI 服务端上传接口(不同版本路径可能略有差异) - 服务端把文件写入
input目录(或对应受控目录) - 节点参数里保存的是“文件名/相对路径信息”,而不是任意绝对路径
核心点:
原生更偏向“模型/图像工作流所需文件”,不是通用文件管理器。
# 生成与保存流程(原生)
你点击 Queue 后,Prompt 在后端执行
SaveImage 等节点把结果写到output目录后端在执行结果(history / 执行返回)里记录产物元数据,例如:
-
filename -
subfolder -
type(常见output)
-
在没有自定义插件时,前端一般有两种下载方式:
- 方式 A:UI 自带下载按钮
在结果预览图上直接“保存/下载” - 方式 B:到服务器路径下复制
一般是将ComfyUI的 output 输出目录设置为 共享目录。
而大多数生成插件都不会提供下载功能,图片生成工作流中都只给预览节点。而现在,只要你能得到资源路径,就可以直接在前端下载任何类型的生成后资源。
# 现在更好的下载上传体验
ComfyUI-Sundaybox 是一个面向 ComfyUI 的实用插件,当前提供两个节点:
NDBox_UploadFiles:在节点面板内上传本地文件到 ComfyUI 目录。NDBox_DownloadFile:通过安全下载令牌下载服务端文件(不直接暴露真实路径)。
有了这个插件后,你在开发“生成/处理类节点”时可以专注业务本身:
只接收一个
file_path(或输出一个file_path)只做“按路径读文件/写文件”
不再在每个节点里重复写:
- 前端文件选择 UI
- 上传接口与表单解析
- 下载按钮与路由
- 文件类型校验与目录策略
等于把“文件传输层”抽成基础设施节点(Upload/Download),业务节点只管算法和处理逻辑。
你可以把它当成一个统一约定:
- 输入侧:
NDBox_UploadFiles 产出规范化路径(如output/3d/xxx.npz) - 业务侧:你的节点按路径处理并输出新路径
- 输出侧:
NDBox_DownloadFile负责安全下载
# 功能特性
- 节点内嵌前端 UI(iframe)完成上传/下载操作。
- 上传支持多种扩展名过滤:
any、npz、npy、json、txt、csv、bvh、fbx、obj、glb。 - 上传目标支持
output/input。 - 下载使用短期
download_id,前端不暴露服务器绝对路径。 - 历史文件列表支持按类型刷新,上传后可立即更新下拉项。
# 目录结构
ComfyUI-Sundaybox/
├─ __init__.py
├─ nodes/
│ ├─ NDBoxUploadFile.py
│ └─ NDBoxDownloadFile.py
└─ web/
├─ NDBoxUploadFile.html
├─ NDBoxUploadFile.js
├─ NDBoxDownloadFile.html
└─ NDBoxDownloadFile.js
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
# 安装方式
- 将本仓库放到 ComfyUI 的
custom_nodes目录下:ComfyUI/custom_nodes/ComfyUI-Sundaybox
- 重启 ComfyUI。
- 打开前端后搜索节点:
NDBox Upload NPZNDBox Download File
# 节点说明
# 1) NDBox_UploadFiles
用于上传本地文件并输出相对路径(例如 output/3d/demo.npz)。
主要输入参数:
upload_target:上传到output或input。upload_subdir:当upload_target=input时可选子目录。file_type:上传后缀限制。file_name:历史文件下拉项。file_path:当前文件路径(可由上传自动写入)。
输出:
file_path(STRING):上传后的相对路径或当前选中文件路径。
# 2) NDBox_DownloadFile
输入服务器文件路径,生成下载信息并在前端提供下载按钮。
主要输入参数:
file_path:要下载的文件路径(可绝对路径,也可相对output/input路径)。
输出:
info(STRING):包含文件名、存在性、大小、下载令牌等信息。
# HTTP 路由
插件会注册以下路由:
POST /NDBox/upload_files:上传文件。GET /NDBox/list_uploaded_files?file_type=...:获取历史文件列表。GET /NDBox/list_input_subdirs:获取 input 子目录列表。GET /NDBox/download_file/{download_id}:按下载令牌下载文件。
# 使用建议
- 上传节点建议新建后再使用,确保前端脚本和 iframe 已更新到最新版本。
- 页面更新后若 UI 未同步,建议浏览器强制刷新(
Ctrl+F5)。 download_id设计为短期/一次性使用,适合前端安全下载场景。
# 开发备注
- 插件入口通过
__init__.py导出:NODE_CLASS_MAPPINGSNODE_DISPLAY_NAME_MAPPINGSWEB_DIRECTORY = "web"
- 前端扩展名:
NDBox.UploadFilesNDBox.DownloadFile
