ComfyUI Node Runs on cloud

Zip Save

Zip up the files your run just made

By WASasquatch·Created 3 years ago·Updated 4 days ago· 1,844
Zip Save
  • paths
  • zip_path
  • file_count
files
entry_pathsrelative path
compressiondeflate
root
filename_prefixComfyUI
filename_delimiter_
filename_number_padding4
filename_suffix

Zip Save is the write end of the WAS archive family: it takes files that live in ComfyUI's folders and packs them into one zip on disk. Where ZIP Add builds an archive from images, masks and text on the wire, Zip Save reaches into your output, input and temp folders and grabs whatever files you point it at - an earlier render, a log, a JSON - and bundles them into a numbered archive. It's the "gather everything and hand me one file" node.

It also writes archives created elsewhere in the graph: Zip Save (the archive family's tooltips call it Save ZIP) is where the ZIP value from ZIP Add, ZIP Manage or Open ZIP goes when it's time to land on disk. That's the standard finish for the family - build and filter on the wire, write here.

Choosing the files

Two ways in, and you can use both. files is a multiline box, one file per line, in the order you want them archived. A line is either a menu label like renders/cat.png [output] - where the bracketed tag says which folder it came from, so two files of the same name from different folders stay apart - or a full path the pack may read. Line order is archive order. Blank lines are ignored, a # line is a comment, and naming a file twice only puts it in once.

paths is the second way: an ARRAY or STRING input that takes the same thing from a link, appended after whatever you typed. So the natural flow is - have a node produce a list of render paths? Wire that list straight into paths and Zip Save does the rest.

The settings that shape the archive

  • entry_paths - what each file is called inside the zip: relative path (just its path below input/output/temp), source folder and relative path (output/batch/cat.png), or file name only. With file-name-only, a clash is numbered apart as cat_2.png.
  • compression - deflate for text/JSON/documents (much smaller), store for already-compressed PNGs and JPEGs (faster, no gain from re-packing).
  • root - where the archive lands: ComfyUI's output or temp, or any folder under paths.allow_write. filename_prefix names the part below it, tokens expand, so [time(%Y-%m-%d)]/notes files each day's under a dated folder.

The filename quartet is fiddly but simple once you see it: filename_prefix (default ComfyUI), filename_delimiter (_), filename_number_padding (4 → _0001), and optional filename_suffix (after the number, before .zip). ComfyUI_0001_renders.zip is a prefix of ComfyUI, delimiter _, padding 4, suffix _renders. Set padding to 0 and the number disappears entirely - which also means the same file gets rewritten every run.

Outputs and failure behavior

zip_path is the full path of the archive that was written, numbering and all - feed it to a text console, a report node, or back into Open ZIP. file_count tells you how many files actually went in.

The node is honest about problems: a file deleted since you chose it is reported and skipped, and if nothing is left to archive it says so rather than writing an empty zip. Where beginners get burned is the padding-0 rewrite - great for "keep one canonical archive up to date," a quiet surprise if you expected history. Leave padding at 4 until you mean otherwise.

Install

WAS Node Suite v3 - ComfyUI Manager, search "WAS Node Suite v3", or cd ComfyUI/custom_nodes && git clone https://github.com/WASasquatch/was-node-suite-comfyui, restart. Requires ComfyUI 0.14.0+ / Python 3.10+, no feature flag, no extra packages - standard-library zip under the hood. It's the least glamorous node in the pack and the one that turns "email me the batch" into a single delivered file.

CategoryWAS Suite/Archive

Inputs (9)

NameTypeDefaultDescription
filesSTRINGThe files going into the archive, one per line, in that order. A line is a menu label such as 'renders/cat.png [output]', or a full path to a file.
entry_pathsCOMBOrelative pathWhat each file is called inside the archive: its path below input, output or temp, that path with the source folder in front, or the file name alone.
compressionCOMBOdeflateHow the files are packed. 'deflate' makes text, JSON and documents much smaller; 'store' packs them unchanged, which is faster and suits PNGs and JPEGs, compressed already.
rootCOMBOWhich folder the file lands in: ComfyUI's own 'output' or 'temp', or any folder added under paths.allow_write in config.yaml, listed by its own name. filename_prefix names the part below it, so '[time(%Y-%m-%d)]/notes' files each day's under a dated folder.
filename_prefixSTRINGComfyUIThe name part of the archive, before the number. Tokens are expanded here too, so a date or a custom token can go in the name rather than the folder.
filename_delimiterSTRING_What sits between the name and the number: 'ComfyUI_0001.zip' with the default, 'ComfyUI0001.zip' if cleared.
filename_number_paddingINT40–9How many digits the number is padded to with leading zeros: 4 gives '_0001', 1 gives '_1'. 0 drops the number and rewrites the same file every run.
filename_suffixoptSTRINGExtra text placed after the number and before the extension, so a suffix of '_renders' gives 'ComfyUI_0001_renders.zip'. Empty by default.
pathsoptARRAY,STRINGMore files to archive, from a link rather than the box above: this socket takes a connection. A string holding several lines is read as several files.

Outputs (2)

NameTypeDescription
zip_pathSTRINGThe full path of the archive that was written, numbering and all, so a later node can report it, print it, or open it again with Zip Open.
file_countINTHow many files went into the archive. Lower than the number of lines chosen when one of them had been deleted, which the log names.