Пользователь загружает большой файл на мой сайт, и я хочу сжать файл и сохранить его в BLOB-объекте. Таким образом, у меня есть несжатый InputStream и BLOB-объект хочет InputStream. Я знаю, как сжимать InputStream в Outputstream с помощью GZIPOutputStream, но как мне перейти от gzip'ed OutputStream обратно к InputStream, необходимому для большого двоичного объекта.
Единственный способ, который я смог найти, - это использование ByteArrayOutputStream, а затем создание нового InputStream с использованием toByteArray. Но это будет означать, что у меня есть полная копия файла в памяти. И меня не удивит, если реализация драйвера JDBC преобразует поток в байт [], так что у меня будет две копии в памяти.