It turns out you can access it in a Groovy script directly through ff, as
ff.size. It appears to return a result in bytes.

import org.apache.nifi.processor.ProcessContext
import org.apache.nifi.processor.ProcessSession
import org.apache.nifi.processor.io.InputStreamCallback
import org.apache.nifi.flowfile.FlowFile

def ff = session.get()
if (!ff) return  // Exit if no flow file is available

try {
    // Retrieve and log all attributes
    ff.getAttributes().each { key, value ->
        log.info("Attribute: ${key} = ${value}")
    }

    // Log the fileSize system attribute
    log.info("System Attribute - fileSize: ${ff.size}")

    ff = session.putAttribute(ff, 'file_size', ff.size.toString())

    // Transfer the flow file to the next stage in the flow
    session.transfer(ff, REL_SUCCESS)
} catch (Exception e) {
    log.error("Error processing flow file", e)
    session.transfer(ff, REL_FAILURE)
}

On Sat, Jun 15, 2024 at 5:14 PM James McMahon <jsmcmah...@gmail.com> wrote:

> Hello. I am trying to determine a way to get the size of a NiFi flowfile
> within a Groovy script. Has anyone done this before, and can tell me how to
> do this from within Groovy?
>
> This
> https://jameswing.net/nifi/nifi-internal-fields.html
> describes fileSize as a hidden field that can be accessed via expression
> language, but I do not see how I can reference that in a Groovy script.
>
> Thanks in advance for any help.
>

Reply via email to