我有一个正在编写的自定义 Java 控制台应用程序,用于将非二进制文件上传到我拥有的 Java 应用程序服务器。它正在将文件执行 HTTPS 多部分/表单数据 POST 到 REST api。虽然它适用于小文件,但我想将 GZIP 内容编码应用于发布请求,以便更有效地处理大文件。
是否有一个 JAVA 库可以用来 gzip 帖子,包括文件内容,然后在另一端解压缩?我想避免必须先压缩文件,而宁愿依靠 HTTP 编码来处理它。
最佳答案
为了迂腐,您不会 gzip 整个 POST。您只需对内容数据进行 Gzip 压缩,然后在您的 POST 中将内容编码设置为 gzip
。
您还没有发布您的代码(得到???),所以需要做一些假设来举个例子:
import java.util.zip.GZIPOutputStream;
import java.io.ByteArrayOutputStream;
...
final String yourData = "butts";
final ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
final GZipOutputStream gzipOutputStream;
try {
gzipOutputStream = new GZipOutputStream(byteArrayOutputStream);
gzipOutputStream.write(yourData.getBytes("utf-8"));
} finally {
gzipOutputStream.close();
}
final byte[] gzippedButts = byteArrayOutputStream.toByteArray();
/*
* Now use the gzipped data as the data in your POST, and also
* make sure to set the Content-Encoding of your HTTP POST to "gzip".
*/
编辑:再次阅读这个问题,听起来 OP 想要一个库来抽象掉所有的处理,而只是在引擎盖下 Gzip 一个请求体。不幸的是,我不知道有任何这样的图书馆。
关于java - 如何将 GZIP 内容编码应用于 HTTP 文件上传 multipart/form-data POST,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28205982/