Если файл не слишком большой, вы можете использовать base64 и использовать его как значение для скрытого поля.
Недавно у нас было похожее требование, когда существующий проект на основе Spring Boot, который изначально был упакован как исполняемый Jar-файл, необходим для поддержки развертываний Tomcat и WildFly.
Из-за некоторых зависимостей, используемых в этом проекте (например, WebJars), простой переход на пакет WAR не был возможен, поскольку некоторые из этих зависимостей были необходимы для WildFly (поддержка VFS), но не для другого развертывания.
Решение состояло в том, чтобы реструктурировать модули проекта таким образом, чтобы модуль core содержал фактический проект, но без применения подключаемого модуля Spring Boot, тогда как несколько модулей пакета зависели бы от ] core и настройте особенности артефактов развертывания (загрузочные и другие плагины, специфичные для развертывания зависимости и т. д.).
Таким образом, сборка проекта могла генерировать несколько артефактов развертывания (исполняемый JAR-файл Boot, традиционная WAR и WAR для WildFly) за один запуск сборки.
В случае, если кто-то найдет это полезным, пример проекта для демонстрации подхода доступен на Github . Проект может быть построен либо Gradle, либо Maven.