Minio Upload File ๐
Push one file to your MinIO bucket from inside ComfyUI โ and skip it when it hasn't changed
- minio_connector
- log
MinioUploadFile is the node you reach for when a single generated image, trained LoRA, or config file needs to end up on your MinIO server, and you want it to happen as part of the graph instead of with mc cp in a terminal. It's the simplest transfer node in the pack: one file in, one log line out, and a genuinely thoughtful skip behavior that makes re-running workflows cheap.
What it does. It takes a file that lives under your ComfyUI directory and uploads it to a bucket as an object (MinIO's word for "file with a key"). The path safety rule is worth knowing before anything else: the pack deliberately refuses to touch files outside the ComfyUI base directory. Uploading something from /home/you/documents isn't a bug you've hit - it's a guardrail working as designed. Files live in temp, input, output, and similar subfolders, and paths are relative to the ComfyUI root.
The inputs that matter:
minio_connector- fromInitMinioConnector.bucket_name- where it goes.file_path- relative to the ComfyUI directory, likeoutput/my_image.png. Nice detail: this actually accepts a glob pattern, sooutput/batch_*.pnguploads every match.object_name- the remote key. Leave it empty and it defaults to the file's basename.
The smart bit: hash-skip. Before uploading, the node computes the local file's MD5 and compares it to the remote object's ETag. If they match, it logs "File has not changed, skipping upload" and does nothing. This is huge for workflows that run on a schedule or get re-executed often - you don't re-upload 2 GB of identical data every run. It also makes the node effectively idempotent, which is exactly what you want from a pipeline step.
How it works. Under the hood it globs the path under folder_paths.base_path, loops the matches, and calls the MinIO SDK's fput_object for each one, then joins the per-file log lines into a single log string output. No progress bar here (the Aliyun side gets one; this one doesn't) - for a single file it's fast enough that you won't miss it.
Install. Manager: search "ComfyUI-MinioConnector", install, restart. Manual:
cd ComfyUI/custom_nodes
git clone https://github.com/MieMieeeee/ComfyUI-MinioConnector
cd ComfyUI-MinioConnector
pip install -r requirements.txt
Only dependency is the minio client; no models, no GPU.
Troubleshooting. The two failures you'll actually hit: an S3Error about a missing bucket (fix: drop MinioCreateBucketIfNotExists in front, or create it in the console) and a credentials/endpoint error that traces back to the init node - remember the client connects lazily, so the real auth failure only surfaces here. And if your file_path yields nothing, the node raises "No files matched the pattern" rather than silently succeeding. That's a feature: it stops you from believing you synced when you didn't.
Inputs (4)
| Name | Type | Default | Description |
|---|---|---|---|
| minio_connector | MINIO_CONNECTOR | โ | |
| bucket_name | STRING | โ | |
| file_path | STRING | โ | |
| object_name | STRING | โ |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| log | STRING | โ |