Trong Java, hãy thử này
S3Object s3Object = amazonS3Client.getObject(bucketName, fileKey);
ObjectMetadata metadata = s3Object.getObjectMetadata();
Map customMetaData = new HashMap();
customMetaData.put("yourKey", "updateValue");
customMetaData.put("otherKey", "newValue");
metadata.setUserMetadata(customMetaData);
amazonS3Client.putObject(new PutObjectRequest(bucketName, fileId, s3Object.getObjectContent(), metadata));
Bạn cũng có thể thử đối tượng sao chép. Ở đây siêu dữ liệu sẽ không sao chép trong khi sao chép một đối tượng. Bạn phải nhận siêu dữ liệu gốc và được đặt để sao chép yêu cầu. Phương pháp này được đề nghị cao hơn để chèn hoặc cập nhật siêu dữ liệu của một đối tượng Amazon S3
ObjectMetadata metadata = amazonS3Client.getObjectMetadata(bucketName, fileKey);
ObjectMetadata metadataCopy = new ObjectMetadata();
metadataCopy.addUserMetadata("yourKey", "updateValue");
metadataCopy.addUserMetadata("otherKey", "newValue");
metadataCopy.addUserMetadata("existingKey", metadata.getUserMetaDataOf("existingValue"));
CopyObjectRequest request = new CopyObjectRequest(bucketName, fileKey, bucketName, fileKey)
.withSourceBucketName(bucketName)
.withSourceKey(fileKey)
.withNewObjectMetadata(metadataCopy);
amazonS3Client.copyObject(request);
Nguồn
2015-04-22 13:03:22
tiêu đề x-amz-metadata-directive không hoạt động. Nó kết quả trong một không khớp chữ ký mỗi lần. Tất cả các tiêu đề x-amz khác hoạt động tốt. –