Как изменить ZipSecureFile.setMinInflateRatio () в процессоре ConvertToExcel Nifi? - PullRequest
1 голос
/ 15 октября 2019

Я пытаюсь принять файлы 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. Любой совет или помощь будут искренне оценены.

...