ACI API 25.3
ACI API Programming Guide

# Send Multipart Data

The following program provides a more detailed example that includes sending multipart data to a Media Server for processing.

Copy

    import com.autonomy.aci.client.services.AciService;
    import com.autonomy.aci.client.services.impl.AciServiceImpl;
    import com.autonomy.aci.client.services.impl.DocumentProcessor;
    import com.autonomy.aci.client.transport.AciServerDetails;
    import com.autonomy.aci.client.transport.InputStreamActionParameter;
    import com.autonomy.aci.client.transport.impl.AciHttpClientImpl;
    import com.autonomy.aci.client.util.ActionParameters;
    import org.apache.hc.client5.http.impl.classic.HttpClients;
    import org.w3c.dom.Document;

    import javax.xml.transform.OutputKeys;
    import javax.xml.transform.Transformer;
    import javax.xml.transform.TransformerException;
    import javax.xml.transform.TransformerFactory;
    import javax.xml.transform.dom.DOMSource;
    import javax.xml.transform.stream.StreamResult;
    import java.io.ByteArrayInputStream;
    import java.io.FileInputStream;
    import java.io.IOException;
    import java.io.OutputStreamWriter;
    import java.nio.charset.StandardCharsets;

    public class MediaTest {
        public static void main(String... args) throws TransformerException,
            IOException {
            // Create an AciService pointing at media server.
            final AciService aciService = new AciServiceImpl(
                new AciHttpClientImpl(HttpClients.createDefault()),
                new AciServerDetails("mediaserver.example.com", 14000)
            );

            // Config for OCR, assumes [Channels] VisualChannels=1 is enabled on media
            //   server and that the relevant functionality is licensed.
            final String config =
                "[Session]\n" +
                "Engine0=Ingest\n" +
                "Engine1=OCR\n" +
                "Engine2=Output\n" +
                "\n" +
                "[Ingest]\n" +
                "Type=Image\n" +
                "\n" +
                "[OCR]\n" +
                "Type=ocr\n" +
                "Languages=en\n" +
                "\n" +
                "[Output]\n" +
                "Type=response\n";

            try (
                final FileInputStream fis = new FileInputStream(
                    "/home/user/ocr_test.png"
                )) {
                final ActionParameters params = new ActionParameters("process");
                // Plain string parameters can be sent directly.
                params.add("synchronous", true);
                // We can use input stream parameters for image files.
                params.add(new InputStreamActionParameter("SourceData", fis));
                // The documentation for 'Config' says it should either be base-64
                //   encoded or sent as multipart form data, so we're doing the
                //   latter below.
                params.add(new InputStreamActionParameter("Config",
                    new ByteArrayInputStream(config.getBytes(StandardCharsets.UTF_8))));

                // Perform the request, and parse the response to XML.
                final Document xml = aciService.executeAction(
                    params, new DocumentProcessor()
                );

                // Print the XML out.
                TransformerFactory tf = TransformerFactory.newInstance();
                final Transformer transformer = tf.newTransformer();
                transformer.setOutputProperty(OutputKeys.INDENT, "yes");
                transformer.setOutputProperty(OutputKeys.ENCODING, "UTF-8");
                transformer.setOutputProperty(
                    "{http://xml.apache.org/xslt}indent-amount", "2"
                );

                transformer.transform(new DOMSource(xml),
                    new StreamResult(new OutputStreamWriter(System.out, StandardCharsets.UTF_8)));
            }
        }
    }

Copyright 2025 Open Text
Version 25.3 | Last updated July 2025

Send documentation feedback

Close

Send documentation feedback

To send feedback using your default email client, open an email window.

Otherwise, send your feedback and the information below to MFI-swpdl.idoldocsfeedback@opentext.com.

We appreciate your feedback!

Product: Knowledge Discovery ACI API 25.3

Topic Title: Send Multipart Data