Upload Anything
Get any file type into ComfyUI, not just images
- file_path
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.
Inputs (1)
| Name | Type | Default | Description |
|---|---|---|---|
| file | COMBO | 1 options: example.png |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| file_path | STRING | — |