Upload to Gallerina
Ship your generated images to a gallery API (not a folder)
- media
- media
- upload_status
- file_ids
- file_urls
Media Upload - display name "Upload to Gallerina" - posts your generated images (or video) to a separate gallery API instead of dropping them in ComfyUI's output folder. It's a storage node with a specific partner: the "Gallerina" media gallery backend that this repo's web/ folder is built around. If you're running that gallery server, this node is how generated media gets from your graph into it.
The key thing to internalize: the node alone does nothing without the gallery server running. The default api_endpoint is http://localhost:8000, and the node POSTs a multipart upload to {api_endpoint}/files/upload. If nothing's listening on port 8000, you get a connection error. This isn't a general "upload to Civitai" or "upload to S3" tool - it's purpose-built for a specific API contract (/files/upload, plus /files/ endpoints the gallery uses). If you don't have a Gallerina instance, this node is dead weight.
Inputs that matter
media(required) - anIMAGEorVIDEO. Image batches upload as multiple files, each suffixed_batch_1of5,_batch_2of5, etc.media_metadata(required) - a JSON string that gets merged into the upload metadata. Default{}.api_endpoint(required) - the gallery API base URL, defaulthttp://localhost:8000.media_type-auto(default) detects image vs video; you can force either.user_id,filename,tags- optional;tagsis comma-separated and sent as a JSON array.verify_ssl- default true. Set this to false if your gallery uses a self-signed cert - otherwise uploads fail with an SSL error. That's the fix for the most common failure this node produces.
Outputs
The node is an output node (marked OUTPUT_NODE), so it also passes your media through - media comes back out unchanged, so you can save it locally as well. The other outputs: upload_status (a JSON string with success flag and message), file_ids (INT; for batches, the first ID, with all IDs comma-joined in file_urls), and file_urls (a string combining IDs and download URLs, pipe-separated for batches).
Installing it
ComfyBros installs like any custom node pack. ComfyUI Manager - search "ComfyBros" - or:
cd ComfyUI/custom_nodes
git clone https://github.com/turnbros/ComfyBros
One real dependency note: this node imports aiohttp, which is not in the pack's declared dependencies (pyproject.toml lists pillow, numpy, requests - and the README's requirements.txt doesn't exist at all). If you hit ModuleNotFoundError: aiohttp, that's the cause:
pip install aiohttp
The node lives under ComfyBros/Storage.
Gotchas
Three to remember: it needs the gallery server running (check the endpoint), it needs verify_ssl flipped off for self-signed HTTPS, and it needs aiohttp installed even though the pack doesn't declare it. Get those three right and it's a clean "generate → upload → see it in the gallery" pipeline.
Inputs (8)
| Name | Type | Default | Description |
|---|---|---|---|
| media | IMAGE,VIDEO | — | |
| media_metadata | STRING | {} | — |
| api_endpoint | STRING | http://localhost:8000 | — |
| media_typeopt | COMBO | auto | 3 options: auto, image, video |
| user_idopt | STRING | — | |
| filenameopt | STRING | — | |
| tagsopt | STRING | — | |
| verify_sslopt | BOOLEAN | true | — |
Outputs (4)
| Name | Type | Description |
|---|---|---|
| media | IMAGE,VIDEO | — |
| upload_status | STRING | — |
| file_ids | INT | — |
| file_urls | STRING | — |