Skip to content

Instantly share code, notes, and snippets.

@fernandojsg
Last active August 29, 2015 14:06
Show Gist options
  • Save fernandojsg/bd3e02627730af8286af to your computer and use it in GitHub Desktop.
Save fernandojsg/bd3e02627730af8286af to your computer and use it in GitHub Desktop.
MIRTH: Get Base64 compressed ZIP with password from String
function generateBase64ZipFromString(filenameInZip, fileContents, password, tmpDir) {
importPackage(Packages.net.lingala.zip4j);
var uuid = UUIDGenerator.getUUID();
var filenameZip = tmpDir + uuid + ".zip";
var filenameCsv = tmpDir + uuid + ".csv";
var zipFile = new Packages.net.lingala.zip4j.core.ZipFile( filenameZip );
var filesToAdd = new java.util.ArrayList();
FileUtil.write( filenameCsv, false, fileContents );
filesToAdd.add( new java.io.File( filenameCsv ) );
var parameters = new Packages.net.lingala.zip4j.model.ZipParameters();
//parameters.setCompressionMethod(Packages.net.lingala.zip4j.util.Zip4jConstants.COMP_STORE); // set compression method to store compression
parameters.setEncryptFiles(true);
// Set the encryption method to AES Zip Encryption
parameters.setEncryptionMethod(Packages.net.lingala.zip4j.util.Zip4jConstants.ENC_METHOD_AES);
parameters.setAesKeyStrength(Packages.net.lingala.zip4j.util.Zip4jConstants.AES_STRENGTH_256);
// Standard zip Encryption
//parameters.setEncryptionMethod(Zip4jConstants.ENC_METHOD_STANDARD);
parameters.setFileNameInZip( filenameInZip );
parameters.setSourceExternalStream(true);
parameters.setPassword(password);
zipFile.addFiles(filesToAdd, parameters);
var zipBase64 = FileUtil.encode( FileUtil.readBytes( filenameZip ) );
// Delete tmp files
var file = Packages.java.io.File( filenameZip );
file["delete"]();
file = Packages.java.io.File( filenameCsv );
file["delete"]();
return zipBase64;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment