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

标签 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 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,不错),然后当用户加载页面时,浏览器应该解压缩。由于某些原因,仅将内容类型/编码设置为指定的内容有效,其他一切都会失败。

最佳答案

对象元数据。新建然后设置您想要的元数据。

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

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

关于java - 上传到S3时如何设置内容类型和内容编码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16659563/

相关文章:

optimization - 改变 : Accept-Encoding header for Amazon S3 hosted site

python - 在哪里可以找到使用 boto3 编写自定义 AWS 凭证提供程序的文档?

java - 有效地池化 ByteBuffer 的实例

c# - 单击按钮上传图像

android - Android上传文件到服务器

http - 使用 SIRIS 上传文件失败

java - 将动态值作为请求正文发布

java - 如何使用 apache poi 删除 Excel 中的单元格内容

java - 只有一个类的构建器模式

amazon-web-services - Amazon S3 存储桶策略不支持 "version"选项