Nodes/ComfyUI-SwissArmyKnife/Upload to Azure Storage Container
ComfyUI Node

Upload to Azure Storage Container

Ship your generated videos to Azure Blob Storage from inside the graph

By sammykumar·Created 12 months ago·Updated 8 months ago· 6
Upload to Azure Storage Container
    • upload_status
    • blob_url
    • blob_name
    filename
    container_nameuploads

    Most ComfyUI workflows end with a file on your hard drive, which is fine until "your hard drive" is a headless box on the other side of town and you need the clip on your phone, in a share link, or feeding a downstream service. Upload to Azure Storage Container is the pack's answer: point it at a file path, give it a container name, and it pushes the blob to Azure Blob Storage and hands back the URL. No copying to input/, no scp, no zip-and-upload dance.

    The inputs are refreshingly few. filename is the full path to whatever you want to upload - the output of a save node, a video path, anything. container_name defaults to uploads, and the node creates the container if it doesn't exist yet, so you don't have to fiddle in the Azure portal first. On the way out you get three STRING outputs: upload_status (a human-readable "did it work" summary), blob_url (the URL you'd share or hand to a service), and blob_name (the blob key inside the container, useful if you're scripting around it).

    Mechanically it's the azure-storage-blob package under the hood - it's in the pack's requirements.txt - and the node sniffs a content type from the filename so your blobs aren't all marked generic. The part that trips people up is where the credentials live: there is no API-key input on the node. The connection string comes from the Swiss Army Knife settings panel in ComfyUI (the pack caches it to the backend via its config endpoint, swissarmyknife/set_api_keys). You'll see it fetched from the pack's settings at runtime. If you've never entered it, the upload fails with an empty/missing credential - the error message tells you it found no connection string, which is your cue to go add it in Settings.

    Installing

    Same as the rest of the pack:

    • ComfyUI Manager: search "Swiss Army Knife", install, restart.
    • Manual:
    cd ComfyUI/custom_nodes
    git clone https://github.com/sammykumar/ComfyUI-SwissArmyKnife.git
    cd ComfyUI-SwissArmyKnife
    pip install -e .
    

    azure-storage-blob installs with the pack's requirements. If pip was grumpy, pip install azure-storage-blob in your ComfyUI Python environment fixes it. Then restart.

    The part nobody warns you about

    • Set the connection string in ComfyUI settings, not an env var. The node pulls from the pack's cached settings, and there's no environment fallback here - get it wrong and you'll chase a "no connection string" error for a while.
    • Blob URLs are public-ish by default at the container level unless you've locked down access. If this is more than a throwaway pipeline, think about SAS tokens or a private container before you start auto-uploading every render.
    • It only uploads files that exist. Wire it after the save node, not before, or you'll upload air.

    It's a niche node - you probably only want it if you're already an Azure shop or you're building a pipeline that lands renders in the cloud. But when that's the job, it's the whole job in one node, and you can chain the blob_url straight into whatever consumes it.

    CategorySwiss Army Knife 🔪/Utils

    Inputs (2)

    NameTypeDefaultDescription
    filenameSTRINGFull path to the file to upload
    container_nameSTRINGuploadsAzure Storage container name (will be created if it doesn't exist)

    Outputs (3)

    NameTypeDescription
    upload_statusSTRING
    blob_urlSTRING
    blob_nameSTRING