【发布时间】:2016-01-23 02:11:24
【问题描述】:
S3Object 的 ContentMD5 为空。根据文档,如果未设置,则为 null。所以问题是我如何设置它。
我正在使用预签名的 url 将数据上传到 S3 存储桶,当我获取对象时,MD5Content 为空。但是,E3Object 不为空,并且保存已上传文件的正确 Hex 编码的 128 位 Md5 值。预签名的 url 也设置了标头“content-md5”,值是 Base64 编码的 MD5。
创建预签名网址的代码是:
GeneratePresignedUrlRequest generatePresignedUrlRequest = new GeneratePresignedUrlRequest(bucketName, key, httpMethod);
generatePresignedUrlRequest.setContentType("image/jpeg");
byte[] resultByte = DigestUtils.md5(getImage());
String streamMD5 = new String(java.util.Base64.getEncoder().encode(resultByte));
generatePresignedUrlRequest.setContentMd5(streamMD5);
获取数据的代码:
S3Object s3Object = getClient().getObject(new GetObjectRequest(bucket, key));
s3Object.getObjectMetadata().getETag(); //not null
s3Object.getObjectMetadata().getContentMD5(); // null
【问题讨论】:
标签: java amazon-web-services amazon-s3 md5