Upload File To Cloud
Upload File To Cloud — the pack's undocumented node that ships anything to a bucket
- url
Upload File To Cloud is the pack's odd one out, and its least-advertised member: it's shipped in the code and registers in the node list, but the README never mentions it. What it does is simple and broadly useful - take any local file, upload it to an Aliyun OSS or AWS S3 bucket, and hand you back the URL. Images, LoRAs, safetensors checkpoints, logs, whatever the ComfyUI process can read.
That makes it the node to reach for when a workflow produces a file that isn't an image and you want it out of your box - say you trained a LoRA, want a shareable download link, or need to stage a model file into a bucket another machine reads from.
How it works
Give it a local path in file_path, and it checks the file exists, uploads it with put_object_from_file (OSS) or upload_fileobj (S3), and renames it to {prefix}{timestamp}_{original-filename} so collisions don't clobber earlier uploads. The single output, url, is a JSON string - [{"url": ..., "filename": ..., "timestamp": ..., "storage_type": ...}] - not a bare URL, so read it with a text display node rather than expecting a plain link.
A small tell that this node was written for the author's own workflow: its input tooltips are in Chinese (the file_path tooltip translates to "the local file path to upload"). The rest of the pack is in English. It works identically either way - it's just a clue this was the "scratch" node that got shipped with the pack.
Inputs that matter
- file_path - the local file to upload. Relative paths resolve from the ComfyUI working directory, so an absolute path is safer.
- storage_type -
ossors3. - endpoint - OSS:
oss-cn-beijing.aliyuncs.comstyle (no scheme). S3: optional. - bucket - destination bucket.
- prefix - where in the bucket it lands; defaults to
uploads/. - region - S3 only, defaults to
us-east-1.
Credentials - same story as the rest of the pack
No key inputs on the node. Credentials come from environment variables: ALIYUN_ACCESS_KEY_ID / ALIYUN_ACCESS_KEY_SECRET for OSS, AWS_ACCESS_KEY_ID / AWS_SECRET_ACCESS_KEY for S3. Set them where ComfyUI launches and restart, or the node raises Missing required environment variables for oss/s3 storage. The silver lining of the no-key design: your access keys can never leak into a saved workflow JSON or PNG metadata.
Install
Via ComfyUI Manager (search "ComfyUI-CloudStorage"), or:
cd ComfyUI/custom_nodes
git clone https://github.com/philipy1219/ComfyUI-CloudStorage
pip install oss2 boto3
Restart ComfyUI. No model downloads - the only real dependencies are the two storage SDKs.
Common issues
- "File does not exist" - the error surfaces whatever path you typed; double-check it's a path the ComfyUI process can actually read (a relative path against ComfyUI's working directory is the usual culprit).
- Private bucket gives you a dead link - the upload succeeds but the URL 403s for anyone else until you set the bucket's read policy.
- It's not in the README - if you loaded a workflow that references it and got "missing node," it's this pack. Install the pack and it appears under
cloud_storagelike its siblings.
If all you ever do is save generated images, Save Image To Cloud is the better node - it takes the image tensor directly. This one's for the files that aren't images, and for that job it's genuinely the only node in the pack that does it.
Inputs (6)
| Name | Type | Default | Description |
|---|---|---|---|
| file_path | STRING | 要上传的本地文件路径 | |
| storage_type | COMBO | oss | 2 options: oss, s3 |
| endpoint | STRING | — | |
| bucket | STRING | — | |
| prefix | STRING | uploads/ | 存储路径前缀 |
| regionopt | STRING | us-east-1 | S3存储区域 |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| url | STRING | — |