Проблема здесь (я полагаю) в том, что, как только ClamAV использует InputStream, больше нечего передавать.У меня есть аналогичный случай использования, когда один InputStream получен, и это должно быть отсканировано с помощью ClamAV и передано в базу данных.Это было решено путем «многоадресной передачи» InputStream в два OutputStream, которые, в свою очередь, читаются двумя InputStreams, один идет в базу данных, другой - в ClamAV.Эти два потока затем должны быть прочитаны, чтобы продолжить поток.Если проверка на вирусы завершится неудачно, транзакция будет прервана и откатана, а все, что было отправлено в базу данных, будет удалено.
В вашем случае этот подход может быть немного сложным.Альтернативой может быть чтение InputStream в байтовый массив, а затем создание потоков из этого байтового массива, один для отправки в ClamAV, и, если он пройдет, один для передачи.Обратите внимание, что это будет означать, что весь файл будет храниться в памяти, поэтому убедитесь, что Mule достаточно.