Java 上传到S3时如何设置内容类型和内容编码?

Java 上传到S3时如何设置内容类型和内容编码?,java,file-upload,amazon-s3,content-type,content-encoding,Java,File Upload,Amazon S3,Content Type,Content Encoding,我正在上传一些文件到S3存储桶。一个zip文件,一个.json文件 当我上传它们时,两个文件都将具有: Content-Type: application/octet-stream 我需要zip文件具有: Content-Type: text/plain Content-Encoding: gzip 我必须做些什么来确保这些文件以所需的类型/编码上传 下面是我的一些代码: 保存文件: BufferedWriter bw = new BufferedWriter(new OutputStrea

我正在上传一些文件到S3存储桶。一个zip文件,一个.json文件

当我上传它们时,两个文件都将具有:

Content-Type: application/octet-stream
我需要zip文件具有:

Content-Type: text/plain
Content-Encoding: gzip
我必须做些什么来确保这些文件以所需的类型/编码上传

下面是我的一些代码:

保存文件:

BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(fileName)));
bw.write(content);
bw.close();
AWSCredentials myCredentials = new BasicAWSCredentials(ACCESS_KEY,SECRET_KEY);
TransferManager tx = new TransferManager(myCredentials);
Upload uploading = tx.upload(new PutObjectRequest(bucket, awsFileKey, file));
上载文件:

BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(fileName)));
bw.write(content);
bw.close();
AWSCredentials myCredentials = new BasicAWSCredentials(ACCESS_KEY,SECRET_KEY);
TransferManager tx = new TransferManager(myCredentials);
Upload uploading = tx.upload(new PutObjectRequest(bucket, awsFileKey, file));
我正在努力实现的目标:


我正在开发一个自动建议功能。如果我上传纯json文件,它超过1.5MB,这太糟糕了。所以,下一个最好的方法是上传ZIP文件(它将文件减少到300kb,相当不错),然后当用户加载页面时,浏览器应该解压。由于某些原因,仅将内容类型/编码设置为那些指定的工作,其他所有操作都会失败。

ObjectMetadata。新建,然后设置所需的元数据

PutObjectRequest putObjectRequest = new PutObjectRequest(bucket, awsFileKey, file);

if (metadata != null) {
    putObjectRequest.setMetadata(metadata);
}

这些要求可能是错误的。如果确实有ZIP文件,则不希望设置这些标题。为什么你认为你需要这些标题类型?补充了我在主要部分试图完成的内容post@schlenk我在s3中处理类型/编码时设置了这些标题,不知怎的,它起了作用。我知道当我显然想要得到一个zip文件时,我把type设置为text/plain看起来非常愚蠢,但是如何在上传时实现这一点呢?不知道你的意思。但基本上,当您创建元数据对象时,在put请求上设置它。更新答案。