@Grab('net.lingala.zip4j:zip4j:2.2.8')
import net.lingala.zip4j.io.outputstream.ZipOutputStream;
import net.lingala.zip4j.model.ZipParameters;
import net.lingala.zip4j.model.enums.EncryptionMethod;
import org.apache.commons.io.IOUtils
flowFile = session.get()
if(!flowFile) return
flowFile = session.write(flowFile, {inputStream, outputStream ->
byte[] inputByteArray = IOUtils.toByteArray(inputStream)
ByteArrayOutputStream outputByteStream = new ByteArrayOutputStream()
ZipOutputStream outputZipStream = new ZipOutputStream(outputByteStream, "password".toCharArray())
//init the zip parameters
ZipParameters zipParams = new ZipParameters()
zipParams.setEncryptFiles(true)
zipParams.setEncryptionMethod(EncryptionMethod.AES)
zipParams.setFileNameInZip("records.csv")
outputZipStream.putNextEntry(zipParams)
outputZipStream.write(inputByteArray)
outputZipStream.closeEntry()
outputZipStream.close()
outputByteStream.close()
outputStream.write(outputByteStream.toByteArray())
} as StreamCallback)
session.transfer(flowFile, REL_SUCCESS)
我正在使用用 groovy 编写的 executescript 使用密码压缩 csv。executescript 处理器能够毫无问题地将流文件传递给下一个处理器,但该文件已损坏。PutSFTP 处理器抱怨以下错误。
该文件仍然通过 SFTP 存储,但我无法解压缩它,因为它已损坏。我的代码有什么问题?