BuildMyZip is an OutSystems 11 (O11) External Logic component that provides a reusable action for creating ZIP archives from multiple files.
The component accepts a list of files containing their file names and binary content and combines them into a single ZIP archive. It also supports optional password protection.
BuildMyZip is designed to simplify scenarios where an OutSystems application needs to package multiple files into a single downloadable or transferable ZIP archive.
Create a ZIP archive from multiple files.
Combine files of different types into a single ZIP archive.
Accept file content as OutSystems Binary Data.
Specify a custom file name for each file.
Return the generated ZIP archive as Binary Data.
Support optional password protection.
Reusable across O11 applications.
Implemented as External Logic for server-side processing.
Install BuildMyZip from OutSystems Forge.
Reference the component from your OutSystems application.
Use the exposed BuiltMyZip action.
BuiltMyZip
Create a FileInput list containing the files that should be included.
FileInput
Pass the list to BuiltMyZip.
Use the returned ZipFile Binary Data according to your application requirements.
ZipFile
FileInput represents an individual file that will be included in the ZIP archive.
FileName
FileBinary
FileInput ├── FileName = "Invoice.pdf" └── FileBinary = InvoiceBinary
Multiple FileInput records can be added to a list.
Creates a ZIP archive from the specified list of files, with optional password protection.
IsPasswordProtected
Password
The basic process consists of four steps:
Get Files ↓ Create FileInput List ↓ Call BuiltMyZip ↓ Use ZipFile
Retrieve or generate the files that need to be packaged.
For example:
Invoice.pdf Report.xlsx SupportingDocument.docx
Each file should have:
A file name
Binary content
Create a list of FileInput records.
Example:
FileInput List 1. FileName = "Invoice.pdf" FileBinary = InvoiceBinary 2. FileName = "Report.xlsx" FileBinary = ReportBinary 3. FileName = "SupportingDocument.docx" FileBinary = DocumentBinary
Configure the action:
BuiltMyZip IsPasswordProtected = False Password = "" FileInput = FileInput List
The action returns:
as Binary Data.
The resulting ZIP contains:
Archive.zip ├── Invoice.pdf ├── Report.xlsx └── SupportingDocument.docx
The returned Binary Data can then be used by the consuming application according to its requirements, such as providing the archive for download or storing it.
BuildMyZip supports optional password protection.
To enable password protection:
IsPasswordProtected = True Password = "YourPassword"
The resulting ZIP archive is generated with the specified password.
BuiltMyZip IsPasswordProtected = True Password = "MySecurePassword" FileInput = FileInput List
The generated archive can then be handled by the consuming application as Binary Data.
When IsPasswordProtected is enabled, a password should be supplied.
Do not expose passwords unnecessarily in client-side logic or application logs.
BuildMyZip is intended for scenarios where multiple files need to be combined into a single ZIP archive.
FileInput List Invoice.pdf PurchaseOrder.pdf Receipt.pdf DeliveryNote.pdf
Archive.zip │ ├── Invoice.pdf ├── PurchaseOrder.pdf ├── Receipt.pdf └── DeliveryNote.pdf
The FileName attribute determines the name used for the file inside the ZIP archive.
FileName = "MonthlyReport.xlsx"
The generated archive will contain:
MonthlyReport.xlsx
Use unique file names when adding multiple files to the same archive.
BuildMyZip validates the supplied input before creating the ZIP archive.
The following conditions should be avoided:
The FileInput list should contain at least one file.
Every file should have a valid FileName.
Every file should provide its corresponding FileBinary.
File names within the same archive should be unique.
When password protection is enabled, provide a valid password.
Combine multiple documents into one archive before providing them to an end user.
Documents ↓ FileInput List ↓ BuiltMyZip ↓ ZipFile ↓ Download
Package multiple generated reports into a single ZIP archive.
Report 1 Report 2 Report 3 Report 4 ↓ BuildMyZip ↓ Reports.zip
Combine related documents into a single package.
Customer Documents ├── Contract.pdf ├── Agreement.pdf ├── Invoice.pdf └── SupportingDocument.pdf
Result:
CustomerDocuments.zip
Applications that generate multiple files can package them into one archive before providing them to another system or user.
A typical server-side implementation can follow this pattern:
Retrieve Files ↓ Validate Files ↓ Create FileInput List ↓ Configure Password Protection ↓ BuiltMyZip ↓ Receive ZipFile ↓ Store / Download / Transfer
The ZIP archive is generated from the supplied Binary Data.
For large files or large file collections:
Avoid unnecessarily loading the same files multiple times.
Process only the files required for the archive.
Consider the memory requirements of the consuming application.
Avoid creating multiple copies of large Binary Data values where possible.
The overall processing time depends on the number and size of files being compressed.
If the archive contains sensitive or confidential information:
Consider enabling password protection.
Avoid exposing passwords in logs.
Avoid hard-coding passwords.
Apply the application's existing authorization rules before retrieving files.
Ensure users only receive files they are authorized to access.
Password protection should not replace application-level authorization and access control.
Consider an application that needs to provide three documents as one download.
Invoice.pdf Report.xlsx Contract.pdf
FileInput[0] FileName = "Invoice.pdf" FileBinary = InvoiceBinary FileInput[1] FileName = "Report.xlsx" FileBinary = ReportBinary FileInput[2] FileName = "Contract.pdf" FileBinary = ContractBinary
The output contains a ZIP archive equivalent to:
Archive.zip │ ├── Invoice.pdf ├── Report.xlsx └── Contract.pdf
The consuming application should handle errors from the External Logic action appropriately.
Recommended approach:
Call BuiltMyZip ↓ Check execution result ↓ Success → Use ZipFile Failure → Handle / Display Error
For user-facing applications, avoid displaying internal technical details directly to end users.
BuildMyZip is implemented as an OutSystems 11 External Logic component.
The component relies on its packaged external ZIP implementation to create the archive.
Consumers of the component do not need to implement the ZIP creation logic themselves.
The BuildMyZip Demo application demonstrates how to use the BuildMyZip External Logic component.
The demo application can be used to understand:
How to prepare a FileInput list.
How to provide file names.
How to provide Binary Data.
How to invoke BuiltMyZip.
How to handle the resulting ZipFile.
How to configure optional password protection.
Select / Retrieve Files ↓ Build FileInput List ↓ Configure ZIP Options ↓ BuiltMyZip ↓ Receive ZipFile ↓ Use Generated ZIP
Input files must be provided as Binary Data.
The generated ZIP archive is returned as Binary Data.
File names should be unique within an archive.
Large archives can require significant memory during processing.
Password-protection behavior depends on the ZIP implementation used by the component.
The component does not replace application-level authorization for the files being packaged.
Initial release.
ZIP archive generation.
Multiple file support.
FileInput structure.
Binary file processing.
Optional password protection.
ZipFile Binary Data output.
For questions, issues, feature requests, or feedback, use the support/discussion area associated with the BuildMyZip component on OutSystems Forge.
When reporting an issue, include:
BuildMyZip version.
OutSystems platform version.
Description of the issue.
Steps to reproduce.
Relevant error message.
Approximate number and size of files being processed.
Refer to the license specified on the BuildMyZip Forge component page for the applicable terms of use.