【发布时间】:2014-09-22 19:07:37
【问题描述】:
在使用GZIPOutputStream 上传文件之前,我正在尝试在 java 中压缩文件。有没有办法将压缩后的文件存储在内存中以供上传,而不是让它在本地计算机上生成压缩后的文件?
谢谢!
【问题讨论】:
-
你可以将它存储为字节数组。
标签: java apache-httpclient-4.x gzipstream gzipoutputstream
在使用GZIPOutputStream 上传文件之前,我正在尝试在 java 中压缩文件。有没有办法将压缩后的文件存储在内存中以供上传,而不是让它在本地计算机上生成压缩后的文件?
谢谢!
【问题讨论】:
标签: java apache-httpclient-4.x gzipstream gzipoutputstream
只需将 GZipOutputStream 直接连接到输出流并写入即可。不需要文件。
【讨论】:
用GzipCompressingEntity装饰内容实体
HttpPost httpPost = new HttpPost("https://host/stuff");
httpPost.setEntity(new GzipCompressingEntity(new FileEntity(new File("my.stuff"))));
CloseableHttpResponse response = httpclient.execute(httpPost);
try {
EntityUtils.consume(response.getEntity());
} finally {
response.close();
}
【讨论】:
通过写入临时文件并在 gzip 上传完成后对临时文件执行 .deleteonexit 解决了这个问题。
感谢您的帮助!
【讨论】:
GZIPOutputStream 流式传输到临时文件,然后将其上传到服务器。