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

时间:2013-05-20 22:48:08

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

1 个答案:

答案 0 :(得分:2)

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

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

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