一个用户将一个大文件上传到我的网站,我想压缩该文件并将其存储在一个 blob 中。所以我有一个未压缩的 InputStream 并且 blob 想要一个 InputStream。我知道如何使用 GZIPOutputStream 将 InputStream 压缩为 Outputstream,但是如何从 gzip 的 OutputStream 回到 blob 所需的 InputStream。
我能找到的唯一方法是使用 ByteArrayOutputStream,然后使用 toByteArray 创建一个新的 InputStream。但这意味着我在内存中有文件的完整副本。如果 JDBC 驱动程序实现也将流转换为 byte[] 也不会让我感到惊讶,所以我在内存中有两个副本。