Я пытаюсь принять файлы Excel (.xlsx), и часть моего потока Nifi (второй шаг) использует предварительно сконфигурированный процессор ConvertExcelToCSV Nifi, однако некоторые файлы Excel отключаются с помощью детектора Zip Bomb, поскольку они находятся надкоэффициент сжатия по умолчанию.
Я попытался установить ZipSecureFile.setMinInflateRatio () в 0 в файле ConvertExceltToCSV.java, который находится в \ nifi-master \ nifi-nar-bundles \ nifi-poi-bundle \ nifi-poi-processors \ src \ main \ java \ org \ apache \ nifi \ processors \ poi filepath, однако даже после сброса Nifi все равно выдает обнаруженную ошибку ZipBomb и не преобразует нужный мне файл .xlsxв CSV.
public void onTrigger(final ProcessContext context, final ProcessSession session) throws ProcessException {
final FlowFile flowFile = session.get();
ZipSecureFile.setMinInflateRatio(0);
if ( flowFile == null ) {
return;
}
final String desiredSheetsDelimited = context.getProperty(DESIRED_SHEETS).evaluateAttributeExpressions(flowFile).getValue();
final boolean formatValues = context.getProperty(FORMAT_VALUES).asBoolean();
final CSVFormat csvFormat = CSVUtils.createCSVFormat(context, flowFile.getAttributes());
//Switch to 0 based index
final int firstRow = context.getProperty(ROWS_TO_SKIP).evaluateAttributeExpressions(flowFile).asInteger() - 1;
final String[] sColumnsToSkip = StringUtils
.split(context.getProperty(COLUMNS_TO_SKIP).evaluateAttributeExpressions(flowFile).getValue(), ",");
final List<Integer> columnsToSkip = new ArrayList<>();
if(sColumnsToSkip != null && sColumnsToSkip.length > 0) {
for (String c : sColumnsToSkip) {
try {
//Switch to 0 based index
columnsToSkip.add(Integer.parseInt(c) - 1);
} catch (NumberFormatException e) {
throw new ProcessException("Invalid column in Columns to Skip list.", e);
}
}
}
...
}
Я хотел бы установить для MinInflateRatio значение 0 или другое нулевое значение, чтобы, независимо от степени сжатия, Nifi все равно преобразовывал нужную мне страницу из рабочей книги в CSV. Любой совет или помощь будут искренне оценены.