用户上传一个大文件到我的网站,我想gzip该文件并将其存储在一个blob中。所以我有一个未压缩的InputStream,blob需要一个InputStream。我知道如何使用GZIPOutputStream将InputStream压缩到Outputstream,但是如何从gzip处理的OutputStream返回到blob所需的InputStream。如何将未压缩的InputStream有效地转换为gzip的InputStream?
我能找到的唯一方法就是使用ByteArrayOutputStream,然后使用toByteArray创建一个新的InputStream。但是这意味着我在内存中拥有整个文件副本。如果JDBC驱动程序实现将流转换为byte []也不会让我感到惊讶,所以我在内存中有两个副本。
如果您不希望整个文件在内存中,然后写入文件。我看到它的方式gzip的数据需要去某个地方。 – 2010-02-02 18:27:36
我希望能够直接流入blob,所以我从来不需要在整个内存中记录整个内容。它看起来是行不通的,因为我需要知道设置blob参数时的长度。我想在技术上,我可以流式传输到一个文件,获得文件的大小,然后将它用作输入流回到blob中,所以我永远不需要将整个内容保存在内存中。在这种情况下,我基本上会使用文件系统作为我的记忆,这可能最终会变得有用。 – 2010-02-02 19:35:07