ComfyUI Node

Upload to Gallerina

Ship your generated images to a gallery API (not a folder)

By turnbros·Created 11 months ago·Updated 10 months ago· 0
Upload to Gallerina
  • media
  • media
  • upload_status
  • file_ids
  • file_urls
media_metadata{}
api_endpointhttp://localhost:8000
media_typeauto
user_id
filename
tags
verify_ssltrue

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) - an IMAGE or VIDEO. 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, default http://localhost:8000.
  • media_type - auto (default) detects image vs video; you can force either.
  • user_id, filename, tags - optional; tags is 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.

CategoryComfyBros/Storage

Inputs (8)

NameTypeDefaultDescription
mediaIMAGE,VIDEO
media_metadataSTRING{}
api_endpointSTRINGhttp://localhost:8000
media_typeoptCOMBOauto3 options: auto, image, video
user_idoptSTRING
filenameoptSTRING
tagsoptSTRING
verify_ssloptBOOLEANtrue

Outputs (4)

NameTypeDescription
mediaIMAGE,VIDEO
upload_statusSTRING
file_idsINT
file_urlsSTRING