Nodes/ComfyUI-Dev-Utils/Upload Anything
ComfyUI Node

Upload Anything

Get any file type into ComfyUI, not just images

By ty0x2333·Created 2 years ago·Updated 10 months ago· 196
Upload Anything
    • file_path
    file

    ComfyUI's built-in upload path is stubborn: it's images, and Load Image's picker only offers files already sitting in your input folder. Upload Anything (TY_UploadAnything) is the loophole. It's a dropdown that lists every file in your input directory, plus a "choose file to upload" button that accepts any file type - not just the ones core's picker will take. Audio, video, a .safetensors, a .json config, a LUT: if it can be uploaded, this node gets it into the input folder and returns its absolute path as a STRING.

    It's the other file-I/O half of ty0x2333's ComfyUI-Dev-Utils pack, and it's the smallest node in it: one input, one output, no settings. That's the appeal - it does one thing and gets out of the way.

    How it works

    The backend is nearly trivial. The file widget is a dropdown of every file in ComfyUI/input/, and on selection the node resolves the name to an absolute path via folder_paths.get_annotated_filepath() and returns it. The clever part is the frontend: the pack's JavaScript adds an upload button to the widget, which opens a native file dialog with no type restriction, uploads your chosen file through ComfyUI's /upload/image endpoint (the same one core uses - it happily stores non-images), then appends the filename to the dropdown and selects it. It also implements IS_CHANGED using a hash of the filename plus the file's modified time, so re-uploading a same-named file actually re-runs everything downstream - core's default change detection would otherwise skip it because nothing about the selection changed.

    One input, file (the dropdown, or upload fresh via the button), and one output, file_path (STRING). Feed that path into any node that consumes absolute paths - the same downstream pattern as this pack's Url Download node.

    Install

    Identical to the rest of the pack. Via ComfyUI Manager, search "ComfyUI-Dev-Utils", or:

    cd ComfyUI/custom_nodes
    git clone https://github.com/ty0x2333/ComfyUI-Dev-Utils.git
    cd ComfyUI-Dev-Utils
    pip install -r requirements.txt
    

    Then restart. No models, no extra dependencies beyond the pack's single aiohttp-sse pin (which the log console uses, not this node).

    Where people get burned

    Two things. First, it's an upload, not a path picker - the file must go through the upload button or already exist in input/, and it always lands in the input folder. It won't read a file from anywhere else on disk; for that you want a path-based loader. Second, the upload route is the image-named endpoint, so if you've hardened your ComfyUI instance (removed or locked down that route), the upload will silently fail. And a small annoyance: the file list is read once when the node is created, so files you drop into input/ manually while ComfyUI is running won't appear until you re-add the node or restart.

    Verdict

    Niche but genuinely handy - it's what you reach for when your workflow needs a non-image asset and you're tired of hand-copying files into the input folder. No one googles it, but it fills a real gap in the ecosystem, and it fills it simply.

    CategoryTyDev-Utils/Utils

    Inputs (1)

    NameTypeDefaultDescription
    fileCOMBO1 options: example.png

    Outputs (1)

    NameTypeDescription
    file_pathSTRING