乐于分享
好东西不私藏

ComfyUI-资源上传下载接口扩展

ComfyUI-资源上传下载接口扩展

背景: ComfyUI原生不提供各种文件资源的上传下载

  ComfyUI 原生上传通常不是“任意文件上传器”,而是围绕图片等常见输入:

  • 前端在节点(如 LoadImage)里选择本地文件
  • 浏览器把文件 POST 到 ComfyUI 服务端上传接口(不同版本路径可能略有差异)
  • 服务端把文件写入 input 目录(或对应受控目录)
  • 节点参数里保存的是“文件名/相对路径信息”,而不是任意绝对路径
原生更偏向“模型/图像工作流所需文件”,不是通用文件管理器。

生成与保存

  • 你点击 Queue 后,Prompt 在后端执行

  • SaveImage 等节点把结果写到 output 目录

  • 后端在执行结果(history / 执行返回)里记录产物元数据,例如:

    • filename
    • subfolder
    • type(常见output)
在没有自定义插件时,前端一般有两种下载方式:
  • 方式 A:UI 自带下载按钮 在结果预览图上直接“保存/下载”
  • 方式 B:到服务器路径下复制 一般是将ComfyUI的 output 输出目录设置为 共享目录。

而大多数生成插件都不会提供下载功能,图片生成工作流中都只给预览节点。而现在,只要你能得到资源路径,就可以直接在前端下载任何类型的生成后资源。


现在更好的下载上传体验

Github :4698to/ComfyUI-Sundaybox: ComfyUI Files Dowload Upload Tools 

特别是将ComfyUI工作流转换为API时,需要上传文件获取相当文件路径填入 prompt-json时,该插件提供的接口即可满足。

ComfyUI-Sundaybox 是一个面向 ComfyUI 的实用插件,当前提供两个节点:

  • NDBox_UploadFiles
    :在节点面板内上传本地文件到 ComfyUI 目录。
  • NDBox_DownloadFile
    :通过安全下载令牌下载服务端文件(不直接暴露真实路径)。

  ‍

上传

  可以选择 input / output 两个根路径上传,自动刷新  upload_subdir 子级目录

  ‍

下载

  传入 文件路径,即可下载。

功能特性

  • 节点内嵌前端 UI(iframe)完成上传/下载操作。
  • 上传支持多种扩展名过滤:anynpznpyjsontxtcsvbvhfbxobjglb
  • 上传目标支持 output / input
  • 下载使用短期 download_id,前端不暴露服务器绝对路径。
  • 历史文件列表支持按类型刷新,上传后可立即更新下拉项。
  • 安装插件后,你在开发“生成/处理类节点”时可以专注业务本身:

    等于把“文件传输层”抽成基础设施节点(Upload/Download),业务节点只管算法和处理逻辑。

    你可以把它当成一个统一约定:

    • 输入侧:NDBox_UploadFiles 产出规范化路径(如 output/3d/xxx.npz
    • 业务侧:你的节点按路径处理并输出新路径
    • 输出侧:NDBox_DownloadFile 负责安全下载
    • 前端文件选择 UI
    • 上传接口与表单解析
    • 下载按钮与路由
    • 文件类型校验与目录策略
  • 只接收一个 file_path(或输出一个 file_path

  • 只做“按路径读文件/写文件”

  • 不再在每个节点里重复写:

安装方式

  1. 将本仓库放到 ComfyUI 的 custom_nodes 目录下: 
    • ComfyUI/custom_nodes/ComfyUI-Sundaybox
  2. 重启 ComfyUI。
  3. 打开前端后搜索节点: 
    • NDBox Download File
    • NDBox Upload NPZ

HTTP 路由一览

以下接口与 ComfyUI Web 服务同源(默认例如 http://127.0.0.1:8188),请将示例中的 BASE_URL 换成你的实际地址。

方法
路径
说明
POST /NDBox/upload_files
multipart 上传文件
GET /NDBox/list_uploaded_files
按类型列出历史文件名
GET /NDBox/list_input_subdirs
列出 input 下可选子目录
GET /NDBox/resolve_file_path
将下拉文件名解析为相对路径
GET /NDBox/download_file/{download_id}
按节点注册的令牌下载(一次性)
GET /NDBox/download_file_by_filepath
在 input/output/user 目录内按相对路径下载

更多细节请细看 github.com项目:4698to/ComfyUI-Sundaybox