对象相关接口 返回结果 返回的 S3Object 属性如下: 参数 类型 说明 objectContent S3ObjectInputStream 对象的数据流 metadata ObjectMetadata 对象的元数据 taggingCount int 对象标签的数量 bucket String 对象所属的桶 key String 对象key 复制对象 功能说明 您可以使用 copyObject 接口复制对象,您需要设置复制的对象名,所在的桶以及目标桶和对象名。 代码示例 复制一个对象 java public void copyObject() throws AmazonClientException { String destBucketName " "; String destObjectKey " "; String sourceBucketName " "; String sourceObjectKey " "; ObjectMetadata metadataCopy new ObjectMetadata(); metadataCopy.setContentType("text/json"); CopyObjectRequest request new CopyObjectRequest(sourceBucketName, sourceObjectKey, destBucketName, destObjectKey); // request.setStorageClass(StorageClass.Standard); // 设置对象的存储类型 // 如果源对象是归档存储类型,需要先解冻对象 // ObjectUnfreezeSDK unfreezeSDK new ObjectUnfreezeSDK(accessKey, secretKey, endPoint); // System.out.println(unfreezeSDK.unfreeze(oriBucket, oriKey)); // Thread.sleep(60000); // 等待解冻完成 CopyObjectResult result s3Client.copyObject(request); System.out.println("CopyObject success" + result.getETag()); } 媒体存储Java SDK没有直接修改对象元数据的方法,上传文件之后就不能修改了,可以使用 copyObject 接口修改对象元数据,注意:源bucket和目的bucket一致,源key和目的key一致。 java public void changeMetadataViaCopyObject() throws AmazonClientException { String bucket " "; String sourceObjectKey " "; String destObjectKey " "; // 复制到原来的key ObjectMetadata metadataCopy new ObjectMetadata(); metadataCopy.setContentType("text/json"); CopyObjectRequest request new CopyObjectRequest(bucket, sourceObjectKey, bucket, destObjectKey) .withNewObjectMetadata(metadataCopy); CopyObjectResult result s3Client.copyObject(request); System.out.println("changeMetadataViaCopyObject success, Etag:" + result.getETag()); } 文件比较大(超过1GB)的情况下,直接使用copyObject 可能会出现超时,需要使用分片复制的方式进行文件复制,TransferManager封装了分片复制的接口,可以用于复制文件,具体示例请参考 分片上传融合接口 中的使用 TransferManager 进行分片复制部分。