java - 如何将 GZIP 内容编码应用于 HTTP 文件上传 multipart/form-data POST

标签 java http file-upload console-application multipartform-data

我有一个正在编写的自定义 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/

相关文章:

java - 在android中,如何备份java类的内容并恢复它

php - 使用 PHP Curl 库的持久/保持事件 HTTP?

java - 如何处理 <p :fileUpload auto ="true"> with Selenium?

java - 'RealmNoticeModelClass' 有一个主键,使用 'createObject(Class<E>, Object)' 代替

java - 是否可以在 Java 中实现私有(private)接口(interface)或扩展私有(private)类?

c++ - 在 C++ 中解析 HTTP header

php - 处理多个并发的大型上传

iphone - 上传离线数据和上传失败的数据

java - 奇怪的 Java 泛型编译错误 : parameterized method is not applicable for same parameterized types?

c# - 通过 Fiddler 向 asp.net mvc 操作发送 POST 请求